首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最有效的计算重叠次数的方法

最有效的计算重叠次数的方法
EN

Stack Overflow用户
提问于 2019-12-19 21:17:11
回答 5查看 407关注 0票数 0

如何有效地计算字符串中出现的重叠的数量?

例如,count('XLXXXLXX','XX')应该返回3

EN

回答 5

Stack Overflow用户

发布于 2019-12-19 21:31:07

一种简单的方法是使用indexOf(String, int)在源字符串中查找您要查找的模式的每一个匹配项。只需确保增加找到它的索引,这样就不会一直找到相同的索引。

用这种方法

代码语言:javascript
运行
复制
public static int count(String source, String lookFor) {
    int count = 0;
    int i = -1;

    while (i != 0) {
        i = source.indexOf(lookFor, i) + 1;
        if (i != 0) count++;
    }
    return count;
}

我在测试时得到了这个输出

代码语言:javascript
运行
复制
public static void main(String[] args) {
    System.out.println(count("XLXXXLXX", "XX"));    // 3
    System.out.println(count("XXX", "XX"));         // 2
    System.out.println(count("X", "XX"));           // 0
}
票数 2
EN

Stack Overflow用户

发布于 2019-12-19 21:53:47

下面是我最容易读懂的方法:

代码语言:javascript
运行
复制
public static int countOccurrences(String string, String sub) {
    int count = 0;
    int i = string.indexOf(sub);
    while (i >= 0) {
        ++count;
        i = string.indexOf(sub, i+1);
    }
    return count;
}
票数 1
EN

Stack Overflow用户

发布于 2019-12-19 21:36:09

尝尝这个。

代码语言:javascript
运行
复制
public static int count(String s, String f) {
    int count = 0;
    int end = s.length() - f.length();
    for (int i = 0; i <= end; ++i)
        if (s.startsWith(f, i))
            ++count;
    return count;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59416979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档