簡體   English   中英

生成給定字符串的所有子字符串

[英]Generate all substrings of a given string

我想從給定的字符串中生成所有可能的子字符串而沒有冗余值,如下所示:

輸入: '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'不存在。

我想知道並學習生成所有唯一子字符串的正確邏輯。

稍微修復索引

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]產生長度為 1 的字符串'a'

您可以使用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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM