需求:给定一个由字母组成的字符串,依次输出各字母及其重复次数,字母不去重。

举例:

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

类似文章