首页 > 解决方案 > 从python中的字符串获取所有子字符串?

问题描述

在不使用任何模块且不重复的情况下查找字符串中所有子字符串的最快方法是什么


def lols(s):

    if not s:
        return 0
    lst = [] 
    for i in range (len(s)):
        for j in range(i , len(s)+1):
            if not s[i:j] :
                pass
            elif len(s[i:j]) == len(set(s[i:j])):
                lst.append(s[i:j])

    res =  (max(lst , key=len))


s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
s = s*100

lols(s)

此函数适用于小于 1000 的字符串,但在使用示例字符串并且超过大字符串的时间限制时它会冻结

问题

标签: python-3.x

解决方案


也许你的函数性能会像 n 2 或 n!一样变慢。(O(n 2) or O(n!)) 或者内存紧张。关于可以使用 print 函数在 stdout 中打印的字符串的最大大小,因为您必须将文本作为 python 对象传递给 print 函数,并且由于变量的最大大小取决于您的平台,它可能是 2* *31 - 1 在 32 位平台上,2* *63 - 1 在 64 位平台上。

有关更多信息,请访问sys.maxsize


推荐阅读