【leetcode】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've previously visited. Return False otherwise.

Example 1:

Input: path = "NES"
Output: false 
Explanation: Notice that the path doesn't cross any point more than once.

Example 2:

Input: path = "NESWW"
Output: true
Explanation: Notice that the path visits the origin twice.

Constraints:

  • 1 <= path.length <= 10^4
  • path will only consist of characters in {'N', 'S', 'E', 'W}

解题思路:送分题。

代码如下:

class Solution(object):
    def isPathCrossing(self, path):
        """
        :type path: str
        :rtype: bool
        """
        visit = {}
        x,y = 0,0
        visit[(x,y)] = 1
        for i in path:
            if i == 'N':
                y -= 1
            elif i == 'S':
                y += 1
            elif i == 'E':
                x += 1
            else:x -= 1
            if (x,y) in visit:return True
            visit[(x,y)] = 1
        return False

 

posted @ 2020-07-01 10:23  seyjs  阅读(359)  评论(0编辑  收藏  举报