给定一个由前进方向(东南西北)组成的数组,要求化简使得不会走没用的路,比如先向南再向北就是浪费时间。
https://www.codewars.com/kata/directions-reduction/python
一道简单的利用栈的题。
主要思想是:
线性扫描,如果当前元素跟栈顶元素可以相互抵消,就直接出栈;如果当前栈为空或者不能抵消,当前元素就入栈。最后返回栈。
def dirReduc(arr):
dict = {"NORTH":"SOUTH","SOUTH":"NORTH","EAST":"WEST","WEST":"EAST"}
res = []
for i in arr:
if res and dict[i] == res[-1]:
res.pop()
else:
res.append(i)
return res