[英]Calculate the run length encoding of a string
例如,如果字符串具有“ xxxyyz”,则输出将为3x2y1z。我不确定如何执行此问题,我尝试了多种方法,但似乎无法获得接近我想要的输出的任何位置
s = input("Please type a sentence or word: ")
i = 0
count = 1
while len(s) <=i:
if s[i] == s[i+1]:
count = count+1
s1 = count + s[i]
第一周学习编程,我知道我在做什么,希望有人能帮助清除并可能解释我应该做的事情,谢谢!
这是您可以尝试的版本。 它使用zip
来同时遍历输入字符串的两个相邻字符,并enumerate
能够打印循环末尾的内容:
strg = "xxxyyz"
mult = 1
lgth = len(strg)
for i, (prev, nxt) in enumerate(zip(strg, strg[1:])):
if prev != nxt:
print('{}{}'.format(mult, prev), end='')
mult = 1
else:
mult += 1
if i == lgth-2: # print what is left at the end of the string
print('{}{}'.format(mult, nxt))
循环将结束
i (prev, nxt)
-------------
0 ('x', 'x')
1 ('x', 'x')
2 ('x', 'y')
3 ('y', 'y')
...
实际上不需要enumerate
; 循环后可以访问nxt
:
mult = 1
for prev, nxt in zip(strg, strg[1:]):
if prev != nxt:
print('{}{}'.format(mult, prev), end='')
mult = 1
else:
mult += 1
print('{}{}'.format(mult, nxt))
使用collections.Counter
import collections
collections.Counter(your_string)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.