例如string = 'bananaban'
=> ['ban', 'anab', 'an']
我的嘗試:
def apart(string):
letters = []
for i in string:
while i not in letters:
letters.append(i)
print("The letters are:" str(letters))
x = []
result = []
return result
string = str(input("Enter string: "))
print(apart(string)
基本上,如果我知道單詞/字串中的所有字母,我想將它們添加到 x 中,直到 x 包含所有字母。然后我想將 x 添加到結果中。
在我的示例“bananaban”中,這意味著 [ban] 是一個 x,因為“ban”包含字母“b”、“a”和“n”。[anab] 也是如此。[an] 只包含“a”和“n”,因為它是單詞的結尾。
如果有人可以幫助我會很酷^^
uj5u.com熱心網友回復:
IIUC,您想在所有字符都在當前塊中之后進行拆分。
您可以使用 aset來跟蹤看到的字符:
s = 'bananaban'
seen = set()
letters = set(s)
out = ['']
for c in s:
if seen != letters:
out[-1] = c
seen.add(c)
else:
seen = set(c)
out.append(c)
輸出: ['ban', 'anab', 'an']
uj5u.com熱心網友回復:
合乎邏輯的方式是首先創建一個包含字串中所有字母的集合,然后遍歷原始集合,收集每個字符,并在每次集合中的字母集合與原始集合匹配時啟動一個新集合。
def apart(string):
target = set(string)
result = []
component = ""
for char in string:
component = char
if set(component) == target:
result.append(component)
component = ""
if component:
result.append(component)
return result
uj5u.com熱心網友回復:
使用字串中的一組字符,您可以遍歷字串并在結果串列中添加或擴展最后一組:
S = "bananaban"
chars = set(S) # distinct characters of string
groups = [""] # start with an empty group
for c in S:
if chars.issubset(groups[-1]): # group contains all characters
groups.append(c) # start a new group
else:
groups[-1] = c # append character to last group
print(groups)
['ban', 'anab', 'an']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/418882.html
標籤:
上一篇:Pandas資料框行不會丟失
下一篇:解壓縮字串,重復字符`n`次
