需求:给定一个由字母组成的字符串,依次输出各字母及其重复次数,字母不去重。
举例:
input = ‘aabbbca’
output = ‘a2b3c1a1’
input = ‘aa’
output = ‘a2’
input = ‘abb’
output = ‘a1b2’
代码如下:(1)
inp = 'aabbbca' lst = [] # 创建列表,后面的循环将连续相同的字母拆分后放入列表 i = 0 # 遍历所有字符 while i < len(inp): if len(lst) == 0: lst.append(inp[i]) elif inp[i] == inp[i-1]: lst[-1] += inp[i] else: lst.append(inp[i]) i += 1 print(lst) res = '' for i in lst: res += i[0] + str(len(i)) print(res) # ['aa', 'bbb', 'c', 'a'] # a2b3c1a1
(2)
while True:
try:
inp = input('请输入一串字母: ')
res = inp[0]
# 只输入一个字母时
if len(inp) == 1:
res += '1'
# 字母长度大于等于2时
else:
i = 1
count = 1
while i < len(inp):
# 当前字母和前一个字母相同,并且当前字母不是最后一个字符
if inp[i] == inp[i - 1] and i < len(inp) - 1:
count += 1
# 当前字母和前一个字母相同,并且当前字母是最后一个字符
elif inp[i] == inp[i - 1] and i == len(inp) - 1:
count += 1
res += str(count)
# 当前字母和前一个字母不同,并且当前字母是最后一个字符
elif inp[i] != inp[i - 1] and i == len(inp) - 1:
res = res + str(count) + inp[i] + '1'
# 当前字母和前一个字母不同,并且当前字母不是最后一个字符
else:
res = res + str(count) + inp[i]
count = 1 # 当前新字母计数要从1开始
i += 1
print(res)
except:
print('程序出错')
# 请输入一串字母: aabbbca
# a2b3c1a1