【发布时间】:2013-09-27 16:59:16
【问题描述】:
我正在尝试编写一个简单的 python 算法来解决这个问题。你能帮我弄清楚为什么我的代码不起作用:
问题:
如果任何字符重复超过 4 次,则整个集合 重复的字符应替换为斜杠“/”,后跟 2 位数字,即这一系列重复字符的长度, 和性格。例如,“aaaaa”将被编码为“/05a”。 不应替换 4 个或更少字符的运行,因为执行 编码不会减少字符串的长度。
我的代码:
def runLengthEncode (plainText):
res=''
a=''
for i in plainText:
if a.count(i)>0:
a+=i
else:
if len(a)>4:
res+="/" + str(len(a)) + a[0][:1]
else:
res+=a
a=i
return(res)
【问题讨论】:
-
旁白:您可能想查看
collections.Counter和itertools.groupby。两者都是计算序列重复次数的非常有效的方法。 -
重复超过99次会怎样?
-
顺便说一句,如果输入类似于
/05c,则此代码将失败,因为它没有正确转义输入的概念。您要么需要特别处理/,要么压缩每个 出现,而不仅仅是长度> 4 的运行。