# 1496. Path Crossing
"""
given a string 'path' where 'path[i] = 'N, 'S', 'E', or 'W', each
representing moving one unit north, south, east, or west, respectively. you
start at the origin '(0, 0)' on a 2d plane and walk on the path specified by
'path'. return 'true' if the path crosses itself at any point, that is, if at
any time you are on a location you have previously visited. return 'false'
otherwise.
"""
class Solution(object):
def isPathCrossing(self, path):
"""
:type path: str
:rtype: bool
"""
moves = {"N": (0, 1), "S": (0, -1), "W": (-1, 0), "E": (1, 0)}
vis = {(0, 0)}
x = y = 0
for i in path:
dx, dy = moves[i]
x += dx
y += dy
if (x, y) in vis:
return True
vis.add((x, y))
return False
if __name__ == "__main__":
obj = Solution()
print(obj.isPathCrossing("NES"))
print(obj.isPathCrossing("NESWW"))