设有两个字符串S和T,请设计算法求T在S中出现的次数。例如S=“adefghadehuade”,T=“ade”,则T在S中出现了3次。用C语言蛮力法分析
时间: 2024-09-23 21:07:23 浏览: 30
js-utils-给定两个字符串s和t
在C语言中,你可以使用蛮力遍历的方式解决这个问题,即逐个字符地检查字符串S是否包含字符串T。这里是一个简单的暴力搜索算法:
```c
#include <stdio.h>
#include <string.h>
int count_occurrences(char* str1, char* str2) {
int count = 0;
int i = 0;
while (str1[i] != '\0') { // 遍历str1
if (strncmp(str1 + i, str2, strlen(str2)) == 0) { // 如果从i开始连续匹配str2
count++; // 加一计数
i += strlen(str2); // 移动到下一个可能的位置
} else {
i++;
}
}
return count; // 返回T在S中的出现次数
}
int main() {
char S[] = "adefghadehuade";
char T[] = "ade";
printf("T在S中出现的次数: %d\n", count_occurrences(S, T));
return 0;
}
```
这个算法的时间复杂度是O(n * m),其中n是S的长度,m是T的长度,因为对于每个S中的字符,我们最多可能需要检查m个字符来确定是否匹配。
阅读全文