统计子串sub在母串中出现的次数
时间: 2023-03-24 14:03:59 浏览: 130
您好,关于统计子串在母串中出现的次数,我可以回答您的问题。可以使用字符串匹配算法,例如KMP算法、BM算法、Sunday算法等,来实现统计子串在母串中出现的次数。这些算法的时间复杂度都比暴力匹配要低,可以提高匹配效率。
相关问题
c语言统计子串sub在母串中出现的次数
下面是一个简单的 C 语言程序,用于统计子串 `sub` 在母串 `str` 中出现的次数:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100], sub[20];
int count = 0, i, j, flag;
printf("Enter string: ");
gets(str);
printf("Enter substring: ");
gets(sub);
for (i = 0; i <= strlen(str) - strlen(sub); i++) {
flag = 1;
for (j = 0; j < strlen(sub); j++) {
if (str[i+j] != sub[j]) {
flag = 0;
break;
}
}
if (flag == 1) {
count++;
}
}
printf("Substring '%s' appears %d times in the string.\n", sub, count);
return 0;
}
```
程序首先从用户那里获取输入字符串 `str` 和子字符串 `sub`。然后,程序使用两个嵌套的 `for` 循环,逐个比较 `str` 中的每个长度为 `strlen(sub)` 的子串和 `sub` 是否相等。如果相等,则计数器 `count` 加 1。最后,程序输出子串出现的次数。注意,这个程序并没有考虑子串重叠的情况。
用C语言编写函数 统计子串sub在母串中的出现次数
以下是用C语言编写函数统计子串在母串中出现次数的示例代码:
```c
#include <stdio.h>
#include <string.h>
int countSubstring(char *str, char *sub) {
int count = 0;
int len1 = strlen(str);
int len2 = strlen(sub);
for (int i = 0; i <= len1 - len2; i++) {
int j;
for (j = 0; j < len2; j++) {
if (str[i + j] != sub[j]) {
break;
}
}
if (j == len2) {
count++;
}
}
return count;
}
int main() {
char str[] = "hello world, world is beautiful";
char sub[] = "world";
int count = countSubstring(str, sub);
printf("'%s' appears %d times in '%s'\n", sub, count, str);
return 0;
}
```
输出结果为:
```
'world' appears 2 times in 'hello world, world is beautiful'
```
阅读全文