[C语言] 查找字符串出现次数-非KMP算法
Posted 哦哦呵呵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C语言] 查找字符串出现次数-非KMP算法相关的知识,希望对你有一定的参考价值。
此篇文章,主要利用strstr函数进行字符串出现次数的计算。
因为strstr函数返回值为,字符串第一次出现位置的地址。可以利用这一特性,将指针向后移动子串长度,查找后方出现的子串。
eg:
代码
```int my_strstr(char* str, int* count)
{
// 辅助变量
int i = 0;
char* tmp = str;
while (tmp = strstr(tmp, "abcd"))
{
// 能进来,肯定有匹配的子串
// 重新设置查找起点
tmp = tmp + strlen("abcd");
i++;
if (*tmp == 0) // 如果到结束符
{
break;
}
}
*count = i;
return 0;
}
int main(void)
{
char* str = "abcd123abcd543442abcdifa088abcdafdabcd1abcdabcdabcdabcd";
int count = 0;
int ret = 0;
ret = my_strstr(str, &count);
if (ret != 0)
{
return ret;
}
printf("\\"abcd\\"共出现 %d 次\\n", count);
printf("\\n");
return 0;
}
以上是关于[C语言] 查找字符串出现次数-非KMP算法的主要内容,如果未能解决你的问题,请参考以下文章
c语言中如何在一个字符串中查找/出现的位置?需要第一次出现和第二次出现中间的内容和第二次出现和第三