题解 | #密码验证合格程序#
密码验证合格程序
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
}
查看20道真题和解析
