试图实现并形成一个非常简单的算法。此算法接收字母或数字序列。它首先用每个字符或数字创建一个数组(列表)。然后,它将检查每个单独的字符,并将其与序列中的以下字符进行比较。如果两者相等,则从数组中删除该字符
例如输入:12223344112233或aaaabbbcccddaabb
输出应为:1234123或ABCDAB
我相信这个问题源于我创建了一个计数器并增加了每个循环。我使用这个计数器作为数组中的索引标记进行比较。尽管如此,每次我从数组中删除一个项时,它都会在计数器增加的同时更改索引
以下是我的代码:
def sort(i):
iter = list(i)
counter = 0
for item in iter:
if item == iter[counter + 1]:
del iter[counter]
counter = counter + 1
return iter
另一个回答很好。这个函数反向遍历列表以防止跳过项,并使用前面描述的前瞻类型算法。这并不是一个排序算法
一些替代方案,都使用
s = 'AAAABBBCCCDDAAABB'
作为设置:您正在迭代要从中删除的同一个列表。这通常会导致你意想不到的行为。将清单复印一份&;再重复一遍
但是,有一个更简单的解决方案:使用^{}
输出:
相关问题 更多 >
编程相关推荐