实现在给定字符串中搜索并返回子字符串个数的函数
时间: 2023-06-17 10:06:12 浏览: 165
可以使用 Python 的 count() 方法来实现:
```python
def count_substring(string, sub_string):
return string.count(sub_string)
```
该函数接受两个参数,第一个是原始字符串,第二个是要搜索的子字符串。它将返回子字符串在原始字符串中出现的次数。
示例:
```python
string = "hello world, world is beautiful"
sub_string = "world"
print(count_substring(string, sub_string)) # 输出 2
```
相关问题
c语言实现在给定字符串中搜索并返回子字符串个数的函数
可以使用C语言的字符串函数strstr()和strchr()实现在给定字符串中搜索并返回子字符串个数的函数。具体的实现方法如下:
```c
#include <stdio.h>
#include <string.h>
int countSubstring(char *str, char *substr) {
int count = 0;
char *ptr = str;
while ((ptr = strstr(ptr, substr)) != NULL) {
count++;
ptr++;
}
return count;
}
int main() {
char str[100], substr[100];
printf("Enter a string: ");
gets(str);
printf("Enter a substring: ");
gets(substr);
int count = countSubstring(str, substr);
printf("Number of occurrences of substring in string : %d", count);
return 0;
}
```
在这里,countSubstring()函数使用了strstr()函数在字符串中查找子字符串的位置,如果找到了,就增加计数器count的值,然后将指针ptr指向下一个字符继续查找,直到搜索完整个字符串。最后返回计数器的值表示子字符串在字符串中出现的次数。
需要注意的是,gets()函数不是安全的函数,因为它无法判断输入字符串的长度是否超过了数组的长度,因此在实际的程序中应该使用更安全的函数,比如fgets()函数。
c++ 实现在给定字符串中搜索并返回子字符串个数的函数
可以使用字符串查找算法来实现在给定字符串中搜索并返回子字符串个数的函数。比较常用的算法是KMP算法和Boyer-Moore算法。
下面是使用KMP算法实现的代码示例:
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> getNext(const string& pattern) {
int n = pattern.length();
vector<int> next(n, 0);
for (int i = 1, j = 0; i < n; i++) {
while (j > 0 && pattern[i] != pattern[j]) {
j = next[j - 1];
}
if (pattern[i] == pattern[j]) {
j++;
}
next[i] = j;
}
return next;
}
int countSubstring(const string& str, const string& pattern) {
int n = str.length(), m = pattern.length();
vector<int> next = getNext(pattern);
int res = 0;
for (int i = 0, j = 0; i < n; i++) {
while (j > 0 && str[i] != pattern[j]) {
j = next[j - 1];
}
if (str[i] == pattern[j]) {
j++;
}
if (j == m) {
res++;
j = next[j - 1];
}
}
return res;
}
int main() {
string str = "aabaaabaaac";
string pattern = "aa";
int count = countSubstring(str, pattern);
cout << count << endl; // 输出 4
return 0;
}
```
在上面的代码中,`getNext`函数用来计算模式串的next数组,`countSubstring`函数用来计算字符串中子串的个数。具体实现过程中,我们需要两个指针i和j,分别指向字符串和模式串。当str[i]和pattern[j]不匹配时,我们需要用next数组来更新j的值,直到str[i]和pattern[j]匹配为止。当j等于模式串的长度时,说明找到了一个匹配的子串,此时将结果加1,并更新j的值为next[j-1]。