子串问题(函数、字符串、指针)

版权声明:本文为博主原创,未经博主允许不得转载 https://blog.csdn.net/Sherry_Yue/article/details/85759661

问题描述】
请编写函数统计子串substr在母串str中出现的次数。函数原型如下,返回值为出现的次数:
int Count(char *str, char *substr);

【样例说明】 第一行为母串、第二行为子串

【样例输入】
abcbcbc
bcb

【样例输出】 2

#include <iostream>
#include <string.h>
using namespace std;

int Count(char  *str, char *substr);

int main()
{
    char str_s[50], substr_s[50];
    cin >> str_s >> substr_s;
    int num = Count(str_s,substr_s);
    cout << num <<endl;
    return 0;
}

int Count(char  *str, char *substr)
{
    int countnum = 0;//计数
    for( int i=0; i<(int)strlen(str); ++i )//以此查找字符串的每个字符
    {
        //先讨论子串只有一个字符长度的情况
        if( *(str+i) == *(substr) && strlen(substr)==1 )//如果下标为i的字符和子串的第一个字符一样
            countnum++;//计数加一

        //再讨论其他长度子串的情况
        else if( *(str+i) == *(substr) )
        {
            bool key = 1;//开关打开
            for(int I=i+1,J=1;I<i+(int)strlen(substr);++J,++I)//遍历对比
                if( *(str+I) != *(substr+J) ) key = 0;//如果字符串中有一个不符合就关上开关
            if(key==1) countnum++;
        }
    }
    return countnum;
}

猜你喜欢

转载自blog.csdn.net/Sherry_Yue/article/details/85759661
今日推荐