2016-02-13 70 views
2

我应该做的是创建一个算法来计算一段文本中子字符串的数量,其中子字符串可以是字母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))。我做得对吗?如果是这样,我可以使它更高效吗?

回答

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