计算一个字符串(子串)在另一个字符串(长串)中出现的次数。#include <string.h> #include <iostream> using namespace std; int frequency(char * substr, char * str); int main() { char sub[128],str[1024]; cin.getline(sub,128); // 输入子串 cin.getline(str,1024); // 输入长串 int n = frequency(sub,str); // 调用frequency函数,计算子串在长串中出现的次数 cout<<n<<endl; // 输出次数 return 0; } // 函数frequency:计算子串在长串中出现的次数 // 参数:substr-指向子串,str-指向长串 // 返回值:出现的次数 int frequency(char * substr, char * str) { // 请在此添加代码,实现函数frequency /********** Begin *********/ /********** End **********/ }
时间: 2023-07-18 07:44:45 浏览: 247
C语言编程-编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数;
5星 · 资源好评率100%
可以使用字符串匹配算法来计算一个字符串(子串)在另一个字符串(长串)中出现的次数。以下是一个简单的实现,使用了朴素的字符串匹配算法:
```c++
int frequency(char * substr, char * str) {
int n = strlen(substr);
int m = strlen(str);
int count = 0;
for (int i = 0; i <= m - n; i++) {
bool match = true;
for (int j = 0; j < n; j++) {
if (substr[j] != str[i+j]) {
match = false;
break;
}
}
if (match) {
count++;
}
}
return count;
}
```
这个函数首先计算出子串和长串的长度,然后依次在长串中搜索子串。对于长串中的每个位置,如果该位置开始的子串与给定的子串匹配,则计数器加1。最后返回计数器的值,即子串在长串中出现的次数。
需要注意的是,这个实现并不是最优的。在实际应用中,可以使用更高效的字符串匹配算法,例如KMP算法、Boyer-Moore算法、Rabin-Karp算法等。
阅读全文