首页 > 解决方案 > 生成给定字符串的所有子字符串

问题描述

我想从给定的字符串中生成所有可能的子字符串,没有冗余值,如下所示:

输入:'abba'

输出:'a','b','ab','ba','abb','bba'

这是我的代码

s='abba' 
for i in range (0,len(s)):
    for j in range (i+1,len(s)):
        print(s[i:j])

我的输出是'a','ab','abb','b','bb','b'

从输出中可以看出'b'是重复的,并且'bba'不存在。

我想知道并学习正确的逻辑来生成所有唯一的子字符串。

标签: pythonpython-3.xalgorithmsubstring

解决方案


稍微修复索引

s='abba' 
for i in range (0,len(s)):
    for j in range (i,len(s)):
        print(s[i:(j+1)])

产生以下输出

a
ab
abb
abba
b
bb
bba
b
ba
a

基本上,索引修复考虑到了

  • 'abba'[3:3]只产生零长度字符串''

  • 'abba'[3:4]'a'产生长度为 1 的字符串。

您可以使用 删除重复项set(),如下所示:

s='abba'
ss = set()
for i in range (0,len(s)):
    for j in range (i,len(s)):
        ss.add(s[i:(j+1)])
        
print(sorted(ss))

然后你会得到以下结果['a', 'ab', 'abb', 'abba', 'b', 'ba', 'bb', 'bba']


推荐阅读