H. 字符串碎片 题目描述 一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:"aaa","bb",‘c’。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。 所有碎片的平均长度 = 所有碎片长度之和/碎片个数 输入 测试次数t 每组测试数据为一行字符串 输出 对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。
时间: 2024-02-28 19:53:05 浏览: 140
这是一道字符串处理的简单题目,下面是 Python 语言的实现代码:
```python
t = int(input())
for _ in range(t):
s = input()
cnt, total_len = 1, 0
prev = s[0]
print(prev, end="")
for c in s[1:]:
if c != prev:
print(c, end="")
total_len += cnt
cnt = 1
prev = c
else:
cnt += 1
total_len += cnt
print(" %.2f" % (total_len / (len(set(s)))), end="\n" if _ == t - 1 else "\n\n")
```
思路解析:
1. 读入测试数据的组数 $t$。
2. 对于每组测试数据,先读入字符串 $s$。
3. 用变量 $cnt$ 统计当前碎片的长度,用变量 $total\_len$ 统计所有碎片的长度之和。
4. 用变量 $prev$ 记录上一个字符,从字符串的第二个字符开始遍历,如果当前字符和上一个字符不同,就输出当前字符,并将当前碎片的长度累加到 $total\_len$ 中。
5. 最后将所有碎片的长度之和除以碎片个数(即字符串 $s$ 中不同字符的个数)即可得到所有碎片的平均长度。
6. 注意输出平均长度时要保留 $2$ 位小数,且要注意输出格式。
阅读全文