java - 暴力破解: count number of sub strings in a string array

标签 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))。我这样做正确吗?如果是这样,我可以提高它的效率吗?

最佳答案

这对我来说很有效

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/

相关文章:

java - Spring 属性(property)整合

java - 我应该将 slf4j 的 simplelogger 的属性文件放在哪里?

java - 我可以运行 Hadoop onflow (在应用程序运行时运行 Map Reduce)

c# - 如何将 byte[] 转换为 {#, #, #} 格式的字符串?

regex - 将字符串拆分为列

python - 按给定顺序检查列表的超集

c++ - 没有用于调用 'std::basic_string<char>::basic_string c++ 的匹配函数

java - 在 Java 中随机迭代 ArrayList<Integer>

c - 创建内部数组不需要 Malloc

python - 将 numpy 数组转换为 C 连续顺序的最便宜方法?