首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找长Python字符串的所有唯一子字符串-性能

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

Stack Overflow用户
提问于 2018-10-05 23:10:48
回答 1查看 431关注 0票数 1

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

我是这样做的:

unique_substrings = list(set([p[i:j+1+i] for i in range(len(p)) for j in range(len(p))]))

但是表现很差。在随机生成的长度为900的字符串上,我需要1.5秒。然后,我对每个子字符串做了一个基于长度的数学运算,这进一步花费了更多的时间,增加了3-4秒。

我怎样才能在时间上提高业绩呢?

here已经有了类似的答案,但它涉及到内存。记忆不是我的瓶颈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-05 23:17:29

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

相反,试着:

代码语言:javascript
复制
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("")一起添加。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52674292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档