【问题描述】
请编写函数统计子串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;
}