有没有办法在 O(n) 时间内打印字符串的所有子字符串?

Azm*_*234 5 python string time-complexity nested-loops

我有一个输入abcde。我正在尝试输出这样的内容:

a
ab
abc
abcd
abcde
b
bc
bcd
bcde
c
cd
cde
d
de
e
Run Code Online (Sandbox Code Playgroud)

我无法编写没有嵌套循环的代码。我的问题是这个问题的时间复杂度为O(n)的解决方案是什么?

我的代码如下:

s = "abcde"  
for i in range(len(s)):
    for x in range(i, len(s) + 1):
        a = s[i:x]
        if a != "": print(a)
Run Code Online (Sandbox Code Playgroud)

Jos*_*hua -1

让我们在没有嵌套循环的情况下做到这一点!
这是一个带有库的游戏random,但执行时间与您的代码相似。

from random import randint
list1=[]
str1='abcde'
while len(list1)!=int(((len(str1)+1)*len(str1))//2):
    i=randint(0,len(str1))
    j=randint(0,len(str1))
    i,j=max(i,j),min(i,j)
    if i!=j:
        a=str1[j:i]
        if a not in list1:
            list1.append(a)
            print(a)
Run Code Online (Sandbox Code Playgroud)

如果字符串 ,str1 = 'abcdef'则打印:

de
abcdef
cdef
abc
ef
d
c
abcd
b
abcde
def
bcde
f
bcdef
a
bcd
cd
e
ab
cde
bc 
Run Code Online (Sandbox Code Playgroud)

现在,如果您希望数据按照您指定的顺序排列,请使用sort

list1.sort()
Run Code Online (Sandbox Code Playgroud)