编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。比如字符串"abbcccaddd"子串有"bb"、"cc"、"cc"、"dd"、"dd"、"ccc"和"ddd",共7个。函数原型为:int fun(const char *str);
时间: 2023-07-02 07:08:26 浏览: 47
以下是一个简单的实现,遍历字符串,判断相邻字符是否相同,如果相同则计数器加一。注意边界情况,例如字符串为空或只有一个字符时,不符合要求。
```c++
int fun(const char *str) {
if (!str || strlen(str) < 2) {
return 0;
}
int count = 0;
int len = strlen(str);
for (int i = 1; i < len; i++) {
if (str[i] == str[i-1]) {
count++;
int j = i + 1;
while (j < len && str[j] == str[i]) {
count++;
j++;
}
}
}
return count;
}
```
测试代码:
```c++
#include <iostream>
using namespace std;
int fun(const char *str) {
if (!str || strlen(str) < 2) {
return 0;
}
int count = 0;
int len = strlen(str);
for (int i = 1; i < len; i++) {
if (str[i] == str[i-1]) {
count++;
int j = i + 1;
while (j < len && str[j] == str[i]) {
count++;
j++;
}
}
}
return count;
}
int main() {
cout << fun("abbcccaddd") << endl; // expected output: 7
cout << fun("a") << endl; // expected output: 0
cout << fun("") << endl; // expected output: 0
return 0;
}
```
阅读全文