我有一個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
預期字符串的字符範圍是什麼? –