编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。比如字符串"abbcccaddd"子串有"bb"、"cc"、"cc"、"dd"、"dd"、"ccc"和"ddd",共7个。函数原型为:int fun(const char *str);
时间: 2023-07-06 10:09:25 浏览: 71
好的,我已经理解了你的问题。以下是一个简单的实现:
```c++
int fun(const char *str) {
int count = 0;
int len = strlen(str);
for (int i = 0; i < len - 1; i++) {
int j = i + 1;
while (j < len && str[j] == str[i]) {
j++;
}
count += (j - i - 1);
i = j - 2;
}
return count;
}
```
这个函数使用两个指针 i 和 j 分别指向字符串中的相邻字符,如果它们相同,则将 j 向右移动,直到找到不同的字符。然后,将找到的相同字符子串的数量添加到计数器中,并将 i 设置为上一个相同字符子串的结尾位置。最后,返回计数器的值即可。
请注意,这个函数假定输入字符串为 ASCII 字符串。如果输入字符串包含 Unicode 字符,需要对函数进行修改以正确处理这些字符。
相关问题
编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数
好的,我可以帮你编写这个函数。以下是 Python 代码实现:
```python
def count_same_substrings(s):
count = 0
for i in range(len(s)-1):
for j in range(i+1, len(s)):
if s[j] == s[j-1]:
count += 1
else:
break
return count
```
这个函数的思路是:从字符串的第一个字符开始,依次枚举它和后面的每一个字符组成的子串,并判断这个子串中是否有相邻字符相同的情况。如果有,就将计数器加1;如果没有,就直接跳出内层循环,枚举下一个子串。
你可以调用这个函数,传入你的字符串,它会返回任意两个及两个以上相邻字符相同的子串的个数。希望能够帮到你!
C语言编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int count_same_substrings(char s[]) {
int count = 0;
int len = strlen(s);
for (int i = 0; i < len-1; i++) {
for (int j = i+1; j < len; j++) {
if (s[j] == s[j-1]) {
count++;
} else {
break;
}
}
}
return count;
}
```
这个函数的思路和 Python 版本一样,从字符串的第一个字符开始,依次枚举它和后面的每一个字符组成的子串,并判断这个子串中是否有相邻字符相同的情况。如果有,就将计数器加1;如果没有,就直接跳出内层循环,枚举下一个子串。
你可以调用这个函数,传入你的字符串,它会返回任意两个及两个以上相邻字符相同的子串的个数。希望能够帮到你!
阅读全文