题目描述 一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:"aaa","bb",‘c’。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。 所有碎片的平均长度 = 所有碎片长度之和/碎片个数 输入 测试次数t 每组测试数据为一行字符串 输出 对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。C语言
时间: 2024-03-10 17:50:22 浏览: 233
统计一个由小写英文字母组成的字符串中各个小写英文字母出现的数量
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
int t;
scanf("%d", &t);
while (t--) {
char s[1005];
scanf("%s", s);
int len = strlen(s);
int cnt = 1;
double sum = 0;
printf("%c", s[0]);
for (int i = 1; i < len; i++) {
if (s[i] != s[i - 1]) {
printf("%c", s[i]);
sum += i;
cnt++;
}
}
sum += len;
printf(" %.2f\n", sum / cnt);
}
return 0;
}
```
其中,我们先读入测试数据的组数t,然后依次读入每组数据。对于每组数据,我们使用一个循环遍历字符串中的每个字符,如果当前字符与前一个字符不相同,就输出一个新的碎片并更新碎片个数和长度和。最后,我们输出所有碎片的平均长度,注意保留2位小数。
需要注意的是,在输出碎片时,相同的碎片只需要输出一次,因此我们只需要判断当前字符是否与前一个字符相同即可。
阅读全文