暴力:计算字符串数组中子字符串的数量

时间:2016-02-13 16:16:30

标签: java arrays string for-loop brute-force

我应该做的是创建一个算法来计算一段文本中的子串数,其中子串可以是字母B,后跟C或C后跟B.我不知道该怎么做,但我尝试了它,并得出了下面的结果。我想知道我是否做得对。

int substrCount(String S[0...n-1]){
    int count = 0;
    for (int i = 0; i<=n-2; i++) {
        for (int j=i+1; j<i+2; j++) {
            if ((S[i] == 'B' && S[j] == 'C' ) || (S[i] == 'C' && S[j] == 'B')) {
                count = count + 1;
            }
        }
    }
}

我现在要忽略它是包含小写还是大写。我还需要找到算法的复杂性,我相信它是O(n ^(2))。我这样做了吗?如果是这样,我可以提高效率吗?

1 个答案:

答案 0 :(得分:2)

这对我很有用

static int substrCount( String str) {
    int count=0;
    for (int i=0; i<str.length()-1; i++)
    {
        boolean bc = (str.charAt(i) == 'B' && str.charAt(i+1) == 'C');
        boolean cb = (str.charAt(i) == 'C' && str.charAt(i+1) == 'B');
        if (bc || cb) {
            count++;
        }
    } 
    return count;
}

您需要在字符串中循环字符序列一次才能获得所需的结果。检查几个字符是否等于“BC”或“CB”并将一个索引向前移动到字符串的末尾。

输出示例:

"ACBAA" gives result 1
"ABCBA" gives result 2
"BCBCB" gives result 4
"BBBBB" gives result 0