c语言编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻宇符相同的子串的个数。
时间: 2023-12-29 09:01:57 浏览: 56
可以使用一个循环遍历整个字符串,同时记录前一个字符和当前字符,如果发现相邻字符相同,则将相同字符的个数加一。最后将相同字符个数大于等于2的子串数量相加即可。
以下是一个示例代码:
```c
int count_same_substring(char* str) {
int len = strlen(str);
int count = 0;
int same_count = 1;
char prev_char = str[0];
for (int i = 1; i < len; i++) {
char curr_char = str[i];
if (curr_char == prev_char) {
same_count++;
} else {
if (same_count >= 2) {
count += same_count - 1;
}
same_count = 1;
prev_char = curr_char;
}
}
if (same_count >= 2) {
count += same_count - 1;
}
return count;
}
```
使用示例:
```c
char str[] = "hello, world! aaabbbccc";
int count = count_same_substring(str);
printf("count of same substrings: %d\n", count);
```
输出结果为:
```
count of same substrings: 6
```
说明字符串中有6个相邻字符相同的子串。
阅读全文