我最近看到了这个问题,并且确实坚持执行它。
问题是要根据给定的字符串生成所有可能的按字母顺序排序的子字符串。
较小的示例:对于字符串xcv
我需要生成输出:
c cv cvx v vx x
更大的示例:对于字符串hgrte
我需要生成以下子字符串:
e
eg
egh
eghr
eghrt
eght
egr
egrt
egt
eh
ehr
ehrt
eht
er
ert
et
g
gh
ghr
ghrt
ght
gr
grt
gt
h
hr
hrt
ht
r
rt
t
这是我的实现,没有产生期望的输出。
s = sorted(list(input()))
s = ''.join(s)
for i in range(len(s)):
for j in range(i+1, len(s)+1):
temp = s[i:j]
print(''.join(temp))
这是我的代码的输出:
e
eg
egh
eghr
eghrt
g
gh
ghr
ghrt
h
hr
hrt
r
rt
t
[]
我知道我在打印后必须使用回溯和递归eghrt
,但是我真的坚持执行它。提前致谢 :)
您可以遍历不同的长度并用于itertools.combinations
生成字母的组合:
from itertools import combinations
s = sorted(input())
print(*sorted(''.join(c) for i in range(len(s)) for c in combinations(s, i + 1)), sep='\n')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句