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)])
为了保留字符串的顺序,我认为您必须遍历切片并且只弹出一次新的唯一值。但否则我认为方法是相同的
添加回答
举报