我应该做的是创建一个算法来计算一段文本中子字符串的数量,其中子字符串可以是字母 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))。我这样做正确吗?如果是这样,我可以提高它的效率吗?
最佳答案
这对我来说很有效
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
关于java - 暴力破解: count number of sub strings in a string array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35382185/