我有一个0和1的字符串。将立即重复的子字符串定义为“连续双”。例如,字符串“011101010101110”可以被分解为“011 1010 1010 1110”,其可以被压缩为“011(1010)1110”。搜索长连续的重复子串
是否有一个很好的算法来查找字符串中的所有连续双精度?我能想出的最好的是二次相对于字符串的长度:
def all_contiguous_doubles(s):
for j in range(len(s)):
for i in range(j):
if s[i:j] == s[j:2*j - i]:
print "%s(%s)%s" % (s[:i], s[i:j], s[2*j - i:])
可以有二次方的许多双打。考虑字符串“111 ... 111” –
在任何类型的字符串搜索中避免二次行为的方法是跳过前缀。但是这对于只有两个字符值的字符串来说不太有用,所以它可能是一个不好的折衷。 – abarnert
预期字符串的字符范围是什么? –