2024-09-29 21:42:51 发布
网友
我想建立一个编码器和解码器使用文本编码。在
一个字符串“aaabbbcddddddddeeddd”作为输入,返回字符串“A3B4C1D10E2D4”,其中每个字母符号后跟其在字符串中的频率。译码器反转过程。在
希望帮助您开始使用python。在
检查这些问题,不要完全是你想要的,但它可以帮助你做到这一点
Determining Letter Frequency Of Cipher Text
这个解决方案可以用不同的方式来实现,而且作为一个基于循环的解决方案,它非常简单,留给您作为练习
为了让您体验一下Python电池的强大功能,我提出了一个使用groupby的解决方案
>>> ''.join("{}{}".format(k, sum(1 for e in v)) for k,v in groupby("AAABBBBCDDDDDDDDDDEEDDDD")) 'A3B4C1D10E2D4'
此解决方案的显著特点
cnoder的一个可能的解决方案是简单地在字符串上迭代并计算字符出现的次数,不是很花哨,而是O(n)。在
def encode(s): last = s[0] count = 0 for c in s: if last != c: yield '%s%i' % (last, count) last = c count = 0 count += 1 yield '%s%i' % (last, count)
对于解码器,您可以使用正则表达式来很好地拆分字符串,而不需要编写自己的解析器。在
根据你的测试输入
结果
A3B4C1D10E2D4 AAABBBBCDDDDDDDDDDEEDDDD
还有一点,这里没有真正的理由使用yield,当然也可以先在en-/decode函数中构建字符串,然后返回。在
检查这些问题,不要完全是你想要的,但它可以帮助你做到这一点
Determining Letter Frequency Of Cipher Text
这个解决方案可以用不同的方式来实现,而且作为一个基于循环的解决方案,它非常简单,留给您作为练习
为了让您体验一下Python电池的强大功能,我提出了一个使用groupby的解决方案
此解决方案的显著特点
cnoder的一个可能的解决方案是简单地在字符串上迭代并计算字符出现的次数,不是很花哨,而是O(n)。在
对于解码器,您可以使用正则表达式来很好地拆分字符串,而不需要编写自己的解析器。在
^{pr2}$根据你的测试输入
^{3}$结果
还有一点,这里没有真正的理由使用yield,当然也可以先在en-/decode函数中构建字符串,然后返回。在
相关问题 更多 >
编程相关推荐