题目:
统计子字符串在总字符串中出现的次数。
例如:
总字符串:hellollolloasdllo
子字符串:llo
出现次数:4
解题思路:
解决这个题目,我采用的方法是利用指针遍历总字符串,过程中在总字符串中每一个等于子字符串长度的空间,进行与子字符串字符的依次比较,如果所有字符都相等,证明找到一次子字符串,统计次数加一。
程序代码:
#include <stdio.h>
#include <string.h>
int find(char *,char *);
int main(int argc, char *argv[])
{
int ret = 0;
char a[100], b[50];
puts("请输入总字符串:");
gets(a);
puts("请输入想要查找的子字符串:");
gets(b);
ret = find(a,b);
printf("子字符串在总字符串中出现的次数为:%d\n",ret);
return 0;
}
int find(char *p,char *q)
{
int count = 0,i = 0,j = 0;
int x = strlen(p), y = strlen(q);
while(i <= x - y)//当检查到总字符串剩余字符小于子字符串时,没必要进行比较
{
for(j = 0; j < y; j++){//遍历子字符串,进行对比
if(*(p+i+j) != *(q+j))
{
break;
}
}
if(j == y)//正常结束上面循环后,证明找到了一个完整的子字符串
{
count++;
}
i++;
}
return count;
}
运行结果:
请输入总字符串:
bananananan
请输入想要查找的子字符串:
ana
子字符串在总字符串中出现的次数为:4
请输入总字符串:
hellollolloasdllo
请输入想要查找的子字符串:
llo
子字符串在总字符串中出现的次数为:4
请输入总字符串:
hello
请输入想要查找的子字符串:
world
子字符串在总字符串中出现的次数为:0