【发布时间】:2021-08-08 20:31:52
【问题描述】:
所以这个问题来自 codewars 中的 Last Survivor kata。以下是指南和示例输入。
给你一串字母和一组数字。 数字表示必须按顺序从数组开头开始删除的字母的位置。 每次删除后,字符串的大小都会减小(没有空格)。 返回剩下的唯一一个字母。
输入应产生以下字母。 last_survivor('kbc', [0, 1]), 'b' last_survivor('zbk', [2, 1]), 'z'
我遇到的问题是带有索引 [2,1] 的“zbk”。这是我的代码。 该代码能够很好地解决所有其他问题,但是对于索引以 2 开头的问题“zbk”,它指出第 6 行中的索引列表超出范围。这段代码是否无法正确读取以弹出 new_letters[2] 然后弹出 new_letters[1],对其他人来说效果很好。
def last_survivor(letters, coords):
while len(coords) >= 1:
new_letters = [l for l in letters]
for i in coords:
new_letters.pop(coords[i])
return ''.join(new_letters)
else:
return letters
【问题讨论】:
-
将您的
while更改为if并将您的new_letters.pop(coords[i])更改为new_letters.pop(i)并且您的解决方案有效。虽然它比需要的复杂,但我也推荐@Prune 提供的解决方案。
标签: python python-3.x string for-loop indices