统计一个字符串在另一个字符串中出现的次数,包含重叠和非重叠两种情况
子串可重叠情况
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 国际许可协议 进行许可。转载请注明原作者与文章出处。