一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:"aaa","bb",‘c’。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。 所有碎片的平均长度 = 所有碎片长度之和/碎片个数 输入 测试次数t 每组测试数据为一行字符串 输出 对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。
时间: 2024-02-19 11:04:08 浏览: 105
好的,以下是 Python 代码实现:
```python
t = int(input()) # 测试数据组数
for i in range(t):
s = input().strip() # 输入字符串
fragments = [] # 存储所有碎片
fragment = "" # 存储当前碎片
for j in range(len(s)):
if j == 0 or s[j] == s[j-1]:
fragment += s[j] # 如果当前字符和前一个字符相同,就将其加入当前碎片
else:
fragments.append(fragment) # 如果不同,就将当前碎片加入所有碎片中
fragment = s[j] # 开始新的碎片
fragments.append(fragment) # 将最后一个碎片加入所有碎片中
unique_fragments = list(set(fragments)) # 去重,得到所有不同的碎片
avg_length = sum(len(fragment) for fragment in fragments) / len(fragments) # 计算平均长度
# 输出结果
print(" ".join(unique_fragments), "{:.2f}".format(avg_length))
```
代码实现的思路是先遍历整个字符串,将相同的字符归为一个碎片,将所有碎片存储在一个列表中。然后对列表进行去重,得到所有不同的碎片。最后计算平均长度并输出结果。