1. 程式人生 > 實用技巧 >【leetcode】1496. Path Crossing

【leetcode】1496. Path Crossing

題目如下:

Given a stringpath, wherepath[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 bypath.

ReturnTrueif the path crosses itself at any point, that is, if at any time you are on a location you've previously visited. ReturnFalse

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
  • pathwill 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