如何在不使用正则表达式的情况下检查子字符串是否重复?

时间:2016-03-13 05:08:37

标签: java substring repeat

我想检查String是否包含重复的子串。

例如,如何在不使用Java中的regex库的情况下检查(bc)*

2 个答案:

答案 0 :(得分:1)

你可以简单地使用这种递归算法:

public static boolean repeatedString(String str, String repeat, int lastIndex) {
    int next = str.indexOf(repeat, lastIndex+repeat.length());

    if(next == -1) return false;
    else if(next-lastIndex == repeat.length()) return true;
    else return repeatedString(str, repeat, next);
}

致电repeatedString(str, "bc", -1),它基本上会检查repeat是否连续出现两次。

答案 1 :(得分:0)

一种简单的方法是过滤每个字符并检查它是否以您要查找的子字符串开头。

public static int countSubstringOccurences(String st, String substring) {
    int count = 0;
    for(int i = 0; i < st.length(); i++) {
        if(st.substring(i).startsWith(substring)) {
            count++;
        }
    }
    return count;
}

这个方法将测试给定String的每个子字符串,看它是否以给定的子字符串开头,并在每次找到匹配时将计数增加一。