【发布时间】:2017-11-11 04:55:10
【问题描述】:
我有一个字符串:
a = babababbaaaaababbbab
它需要被缩短,所以它看起来像这样:
(ba)3(b)2(a)5ba(b)3ab
所以基本上它需要获取所有重复的字符并写下它们重复的次数而不是打印它们。 我设法做到了一半:
from itertools import groupby
a = 'babababbaaaaababbbab'
grouped = ["".join(grp) for patt,grp in groupby(a)]
solved = [str(len(i)) + i[0] for i in grouped if len(i) >= 2]
但这仅适用于重复但不是模式的字符。我知道我可以通过在字符串中找到“ab”模式来做到这一点,但这需要对每个可能的字符串都是可行的。有没有人遇到过类似的情况?
【问题讨论】:
-
这是模棱两可的。
aaabbbaaabbb的预期输出是什么?是(a)3(b)3(a)3(b)3还是(aaabbb)2? -
@Nenad 为什么?算法如何知道?
-
@SvenMarnach,最长匹配?我认为这样可以节省最多的空间。
-
这对codegolf.stackexchange.com来说可能是个好问题
标签: python algorithm python-3.x