查找长Python字符串的所有唯一子字符串-性能

时间:2018-10-05 23:10:48

标签: python arrays string

我以为我手头有一个非常简单的问题-查找给定字符串的所有子字符串。

我这样做如下:

js

但是性能非常差。在随机生成的长度为900的字符串上,我需要1.5秒。然后,我对每个子字符串进行基于长度的数学运算,这将花费更多的时间,增加3-4秒。

如何改善时间表现?

已经有一个类似的答案here,但它与内存有关。记忆不是我的瓶颈。

1 个答案:

答案 0 :(得分:3)

如果考虑当前的起点和起点,则可以将循环迭代次数减半。目前,i + j通常超过字符串的长度。

代替尝试:

substrings = {p[i:j] for i in range(len(p)) for j in range(i + 1, len(p) + 1)}

在这里,我们更改语义以使i为起点,j为终点,并强制j > i

这将包括空字符串""。适当时添加substrings.add("")