我应该做的是创建一个算法来计算一段文本中的子串数,其中子串可以是字母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))。我这样做了吗?如果是这样,我可以提高效率吗?
答案 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