3 回答

TA貢獻1809條經驗 獲得超8個贊
您的程序將刪除第一組元素。
AABCAAADA
被打破了
aab
caa
ada
然后計算在列表中找到了多少個元素,如果找到兩個或更多,則將其刪除。
所以aab需要a,并計算它,它大于2,所以它刪除了第一個a。第二次迭代,它有ab,它a再次計數,但只有一個a,所以它通過了。
第三次迭代很重要b,因為只有一次,它會將它添加到您的列表中。
我會把你要刪除的字母大寫
Aab
cAa
Ada
最后一個看起來錯了,但這是因為你的算法是如何設計的,它把最后一個字母留在那里。

TA貢獻1874條經驗 獲得超12個贊
下面是一些可以幫助你的東西
import textwrap
s='ababbcdfgfhh'
n=3 #or anything, you can take as input
lst=[]
x=0
lst=list(textwrap.wrap(s, n))
print(lst)
for x in lst:
print(''.join(sorted(set(x), key=x.index))) # removing the duplicates by using 'set'
它將產生如下輸出:
['aba', 'bbc', 'dfg', 'fhh']
ab
bc
dfg
fh
輸出中的第一行被打印以檢查 lst

TA貢獻1826條經驗 獲得超6個贊
您可以將字符串視為列表,并將切片重建為集合,如下所示:
s = list("AABCAAADA")
def slicer(s, slices):
data = []
for x in slices:
# slices is a list of tuples, where x[0]
# is the starting slice and x[1] is the end
data.append(set(s[x[0]:x[1]]))
return data
slicer(s, [(0, 3), (3, 6), (6, 9)])
為了保留字符串的順序,我認為您必須遍歷切片并且只彈出一次新的唯一值。但否則我認為方法是相同的
添加回答
舉報