繁体   English   中英

计算字符串的游程长度编码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM