我正在解决一个问题,该问题要求我删除字符串数组中的“对”(南北和东西对)。我不确定在Python上解决此问题的方法。
这是问题所在:
编写一个函数dirReduc,该函数将获取一个字符串数组并返回一个字符串数组,其中删除了不必要的方向(W <-> E或S <-> N并排)。(链接到问题:https : //www.codewars.com/kata/550f22f4d758534c1100025a)
一些测试输入和输出:
Input : ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
Output : ["WEST"]
Input : ["NORTH", "WEST", "SOUTH", "EAST"]
Output : ["NORTH", "WEST", "SOUTH", "EAST"]
第二组输入和输出对任务没有多大意义。我最初的想法是使用堆栈,但是现在我不确定该怎么做。
一个简单的实现可以只使用字典来定义相反的方向。处理列表时,如果当前方向与最后一个方向相反,请从输出中删除最后一个方向。否则,将新方向添加到列表中:
dirs = {'NORTH': 'SOUTH', 'SOUTH': 'NORTH', 'EAST': 'WEST', 'WEST': 'EAST'}
def dirReduc(input):
output = []
for dir in input:
if output and output[-1] == dirs[dir]:
output.pop()
else:
output.append(dir)
return output
print(dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]))
print(dirReduc(["NORTH", "WEST", "SOUTH", "EAST"]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句