【发布时间】:2016-08-06 09:16:02
【问题描述】:
删除任何一对具有相同值的相邻字母。例如,字符串“aabcc”在操作后会变成“aab”或“bcc”。
样本输入 = aaabccddd
样本输出 = abd
对如何以匹配重复项并删除它们的方式迭代列表或字符串感到困惑,这是我正在尝试的方式,我知道这是错误的。
S = input()
removals = []
for i in range(0, len(S)):
if i + 1 >= len(S):
break
elif S[i] == S[i + 1]:
removals.append(i)
# removals is to store all the indexes that are to be deleted.
removals.append(i + 1)
i += 1
print(i)
Array = list(S)
set(removals) #removes duplicates from removals
for j in range(0, len(removals)):
Array.pop(removals[j]) # Creates IndexOutOfRange error
这是来自 Hackerrank 的问题:Super Reduced String
【问题讨论】:
-
为什么是
aab?那就是aa是输入样本中的相邻对。 -
你没有很好地解释 Hackerrank 问题。那里的样本是
aabcc(2 次c,而不是 3 次),他们正在讨论系列中的一个操作。 -
aab 因为它正在删除作为一项操作的 cc,而在另一项操作中它将删除 aa 并形成 b。还更正了那个,仅提供链接是因为我无法正确解释问题。