编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。函数原型为:int fun(const char *str);
时间: 2024-02-24 18:00:47 浏览: 85
以下是一个实现此功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int fun(const 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 = fun(str);
printf("任意两个及两个以上相邻字符相同的子串个数:%d\n", count);
return 0;
}
```
在上述代码中,`fun`函数接收一个字符串作为参数,遍历字符串中的每一个字符,对于每一个字符,从它的下一个字符开始往后查找,如果遇到与它相同的字符,就将计数器加1,并继续往后查找。最后返回计数器的值。
在主函数中,我们定义了一个字符串`str`,并调用`fun`函数统计其中任意两个及两个以上相邻字符相同的子串的个数,最后输出结果。
相关问题
编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数
好的,我可以帮你编写这个函数。以下是 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;如果没有,就直接跳出内层循环,枚举下一个子串。
你可以调用这个函数,传入你的字符串,它会返回任意两个及两个以上相邻字符相同的子串的个数。希望能够帮到你!
编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。
好的,以下是一个 Python 的实现:
```python
def count_duplicate_substrings(s):
n = len(s)
count = 0
for i in range(n - 1):
for j in range(i + 1, n):
if s[i:j] == s[i+1:j+1]:
count += 1
return count
```
这个函数的实现思路是:枚举所有子串,对于每个子串,判断它是否和它的下一个字符相同,如果相同则计数器加一。这里使用了两层循环,时间复杂度是 $O(n^2)$,其中 $n$ 是字符串的长度。
阅读全文