题解 | #密码验证合格程序#

密码验证合格程序

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
}

全部评论

相关推荐

野猪不是猪🐗:把你的学校加黑,加粗,斜体,下划线,描边,内阴影,内发光,投影,外发光,再上渐变色,居中,放大到最大字号,再把简历里其它内容删了,就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务