题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
判断重复字符串也可以使用如下三级循环,过去面试会判断重复字符串就 O 的 K 了,现在面试恨不得你独立开发一套 Android 系统。努力吧,少年~
public static String hasDuplicateSubstring(String input) { int n = input.length(); // 遍历每个左指针 i 的起点,从 0 到 n-3,因为子串长度至少为 3 for (int i = 0; i <= n - 3; i++) { // 遍历右指针 j,j 从 i+3 开始,确保比较的子串长度 >= 3 for (int j = i + 3; j <= n; j++) { String substring1 = input.substring(i, j); // 从 j 开始的子串进行比较,长度与 substring1 一样 for (int k = j; k <= n - (j - i); k++) { // 这里的 j-i 是字符串长度 String substring2 = input.substring(k, k + (j - i)); // 如果两个子串相等,说明存在重复子串 if (substring1.equals(substring2)) { return "NG"; // 存在重复子串 } } } } return "OK"; // 没有重复子串 } public static void main(String[] args) { String input1 = "021$bc9000"; // 预期返回 "OK" (没有重复子串) String input2 = "abc$abc$def"; // 预期返回 "NG" (存在重复子串 "abc") String input3 = "abcdefg"; // 预期返回 "OK" (无重复子串) System.out.println(hasDuplicateSubstring(input1)); // 输出: OK System.out.println(hasDuplicateSubstring(input2)); // 输出: NG System.out.println(hasDuplicateSubstring(input3)); // 输出: OK }