2019-03-22  2024-09-15    124 字  1 分钟

统计一个字符串在另一个字符串中出现的次数,包含重叠和非重叠两种情况

子串可重叠情况

1int count_substring_in_string_overlapping(const std::string &str, const std::string &sub) {
2    int num = 0;
3    for (size_t i = 0; (i = str.find(sub, i)) != std::string::npos; num++, i++);
4    return num;
5}

子串不可重叠情况

1int count_substring_in_string_non_overlapping(const std::string &str, const std::string &sub) {
2    int num = 0;
3    size_t len = sub.length();
4    if (len == 0)len = 1;
5    for (size_t i = 0; (i = str.find(sub, i)) != std::string::npos; num++, i += len);
6    return num;
7}

除另有声明外本博客文章均采用 知识共享 (Creative Commons) 署名 4.0 国际许可协议 进行许可转载请注明原作者与文章出处