c++指针计算一个字符串(子串)在另一个字符串(长串)中出现的次数。
时间: 2023-10-12 11:04:42 浏览: 157
C语言编程-编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数;
5星 · 资源好评率100%
这个问题可以通过使用指针来解决。
我们可以从长串的第一个字符开始遍历,每当找到一个与子串第一个字符相同的字符时,就用指针指向长串和子串的下一个字符,然后依次比较两个指针所指向的字符,如果两个字符不同,则退出当前循环,从长串的下一个字符开始继续查找。如果子串的所有字符都被匹配,则计数器加一,继续从长串的下一个字符开始查找。重复此过程,直到长串被完全遍历完为止。
下面是代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int countSubstring(const char* longStr, const char* shortStr) {
int count = 0;
while (*longStr) {
const char *p1 = longStr, *p2 = shortStr;
while (*p1 && *p2 && *p1 == *p2) {
p1++;
p2++;
}
if (*p2 == '\0') {
count++;
}
longStr++;
}
return count;
}
int main() {
char longStr[] = "hello world, world is beautiful, world is amazing!";
char shortStr[] = "world";
int count = countSubstring(longStr, shortStr);
cout << "The substring \"" << shortStr << "\" appears " << count << " times in \"" << longStr << "\"." << endl;
return 0;
}
```
在这个例子中,我们定义了一个 `countSubstring` 函数,它接受两个 `const char*` 类型的参数,分别为长串和子串。在函数中,我们使用两个指针 `p1` 和 `p2` 分别指向长串和子串的当前字符,然后依次比较两个指针所指向的字符,如果两个字符不同,则退出当前循环,从长串的下一个字符开始继续查找。如果子串的所有字符都被匹配,则计数器加一,继续从长串的下一个字符开始查找。最后返回计数器的值。
在 `main` 函数中,我们定义了一个长串和一个子串,并调用 `countSubstring` 函数来计算子串在长串中出现的次数。最后输出结果。
阅读全文