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

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

https://www.nowcoder.com/practice/9eb684f845a446f3b121472de2ea75cd?tpId=225&tqId=2188001&ru=/exam/oj&qru=/ta/primary-grammar-cpp/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E8%25AF%25AD%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D225%26fromPut%3Dpc_kol_aaaxiu

#include <iostream>
#include <cstring>
using namespace std;
bool cmp(char* i, char* j, int len)
{
    for (int a = 0; a < len-1; a++)
    {
        if (*(i + a) != *(j + a)) return false;
    }
    return true;
}
int substrrrr(char* p, char* s, int sublen)
{//p 子串
    int num = 0 ;
    int c = 0;
    while (*s != '\0')
    {
        if (*s == *p)
        {   //先找到头部匹配的位置
            if (*(p + sublen - 1) == *(s + sublen - 1))
            {//判断尾部是否也匹配
                //cout << "尾部已匹配:" << *(p + sublen - 1) << endl;
                if (cmp(p, s, sublen-1))
                { //内部也相等,说明此刻匹配到了一个子串
                    //cout << "发现一个" << endl;
                    num++; //如果里面也相等,子串数加一
                }
            }
        }
        s++;
    }
    return num;
}
int main() {

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

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

    int count = 0, sublen = 0;
    char* f = substr;
    while (*f != '\0')
    {
        sublen++;
        f++;
    }
    // write your code here......

    count = substrrrr( substr, str, sublen);
    cout << count << endl;//
   
    return 0;
}

全部评论

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务