C语言编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数
时间: 2023-12-29 20:02:24 浏览: 68
好的,以下是 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;如果没有,就直接跳出内层循环,枚举下一个子串。
你可以调用这个函数,传入你的字符串,它会返回任意两个及两个以上相邻字符相同的子串的个数。希望能够帮到你!
相关问题
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的位置开始遍历字符串,统计任意两个及两个以上相邻字符相同的子串的个数。最后,函数返回统计结果。
用c语言编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。
好的,下面是 C 语言的实现:
```c
#include <stdio.h>
#include <string.h>
int count_adjacent_chars(char *s) {
int count = 0, i, j;
int len = strlen(s);
for (i = 0; i < len - 1; i++) {
if (s[i] == s[i + 1]) {
j = i + 2;
while (j < len && s[j] == s[i]) {
j++;
}
count += (j - i) * (j - i - 1) / 2;
}
}
return count;
}
int main() {
char s[100];
printf("请输入字符串:");
scanf("%s", s);
printf("相邻字符相同的子串个数为:%d\n", count_adjacent_chars(s));
return 0;
}
```
这个函数和 Python 版本的思路是一样的。不同的是,C 语言中没有字符串类型,需要使用字符数组来表示。同时,C 语言中的整数除法运算 `/` 得到的结果是向下取整的,因此需要使用整数除法运算 `//` 来得到组合数的值。
阅读全文