题解 | 统计字符串中子串出现的次数

#include<iostream>
#include<string>
using namespace std;
int main()
{
    //直接输入字符串
    string str,str1;
    getline(cin, str);
    getline(cin, str1);
    int count = 0;
    int i = 0;
    /*
    while ((str.find(str1,i)) != string::npos)
    {
        count++;
        i += str1.length();//更新i到子字符串末位置
    }
    //第一次查找:
    //    初始位置 i = 0。
    //    在 str 中从位置 0 开始查找 str1,找到 str1 在位置 0。
    //    更新 i 为 0 + strlen("hello") = 5。这样 i 指向第一个 hello 的末尾位置。

    //这种方法不可计算重叠子字符串!
    */
    //可重复计算重叠子字符串方法:
    while(str.find(str1,i)!=string::npos)
    {
        count++;
        i=str.find(str1,i)+1;//注意加法可以直接相加,减法要注意正负
    }
    cout << count;
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
01-16 17:40
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务