编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。比如字符串"abbcccaddd"子串有"bb"、"cc"、"cc"、"dd"、"dd"、"ccc"和"ddd",共7个。函数原型为:int fun(const char *str);
时间: 2023-07-06 17:21:15 浏览: 35
好的,我来为您编写该函数。以下是代码实现:
```c++
int fun(const char *str) {
int count = 0, len = strlen(str);
for (int i = 0; i < len - 1; i++) {
int j = i + 1;
while (j < len && str[j] == str[i]) {
j++;
}
if (j - i >= 2) {
count += j - i;
}
}
return count;
}
```
函数通过遍历字符串中的每一个字符,然后向右查找相邻字符是否相同,如果相同则继续向右查找,直到找到一个不同的字符位置,统计这段相同字符组成的子串的个数。最后将所有符合条件的子串个数相加,得到最终结果。
注意,这里的子串可以是任意两个及两个以上相邻字符相同的字符串,因此"ccc"和"ddd"也算作子串。
相关问题
编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数
以下是一个实现此功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int countSubstr(char *str) {
int len = strlen(str);
int count = 0;
for (int i = 0; i < len - 1; i++) {
int j = i + 1;
while (j < len && str[j] == str[i]) {
count++;
j++;
}
}
return count;
}
int main() {
char str[] = "aabbaaccbbdd";
int count = countSubstr(str);
printf("任意两个及两个以上相邻字符相同的子串个数:%d\n", count);
return 0;
}
```
在上述代码中,`countSubstr`函数接收一个字符串作为参数,遍历字符串中的每一个字符,对于每一个字符,从它的下一个字符开始往后查找,如果遇到与它相同的字符,就将计数器加1,并继续往后查找。最后返回计数器的值。
在主函数中,我们定义了一个字符串`str`,并调用`countSubstr`函数统计其中任意两个及两个以上相邻字符相同的子串的个数,最后输出结果。
c语言编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数
以下是一个C语言函数,用于统计一个字符串中任意两个及两个以上相邻字符相同的子串的个数:
```c
#include <string.h>
int countSubstr(char *str)
{
int len = strlen(str);
int count = 0;
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (str[i] == str[j]) {
count++;
for (int k = i + 1, l = j + 1; k < j && l < len; k++, l++) {
if (str[k] == str[l]) {
count++;
} else {
break;
}
}
}
}
}
return count;
}
```
该函数接收一个字符串作为参数,然后使用嵌套的for循环遍历字符串中的所有字符对,统计相邻字符相同的子串的个数。具体地,函数使用i和j两个循环变量遍历字符串中的所有字符对,如果字符对相同,则使用k和l两个循环变量从i+1和j+1的位置开始遍历字符串,统计任意两个及两个以上相邻字符相同的子串的个数。最后,函数返回统计结果。