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

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

https://www.nowcoder.com/practice/9eb684f845a446f3b121472de2ea75cd

#include <iostream>
#include <cstring>
using namespace std;

int main() {

    char str[100] = { 0 };
    char substr[100] = { 0 };

    cin.getline(str, sizeof(str));
    cin.getline(substr, sizeof(substr));

    int count = 0;

    // write your code here......
    // 双指针法
    char* p = str;
    char* q = substr;
    while(*p != '\0')
    {
        if(*p == *q)
        {
            //判断两个字符串同时结束的情况
            if(*(p + 1) == '\0' && *(q + 1) == '\0') count++;
            p++;
            q++;
        }
        if(*p != *q)
        { 
            if(*q == '\0')
            {
                count++;
                p -= q - substr - 1; //p也回溯,解决重叠问题
            }
            else p++;   
            q = substr;
        } 
    }


    cout << count << endl;

    return 0;
}

全部评论
不是最好最直观的方法,主要训练自己分析问题的思路,提高代码掌控力。
1 回复 分享
发布于 2023-07-12 09:59 江苏

相关推荐

HaxyBT:那我提前下班总可以了吧
点赞 评论 收藏
分享
牛客ID:561366855:期望薪资多少?难以相信这简历找不到工作。说明二本电子信息专业想对口就业非常难。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务