1496. Path Crossing

Difficulty:
Related Topics:
Similar Questions:

    Problem

    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.

      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:

    Solution

    /**
     * @param {string} path
     * @return {boolean}
     */
    var isPathCrossing = function(path) {
        var num = 0;
        var map = {
            N: 1,
            S: -1,
            E: 10000,
            W: -10000,
        };
        var visited = { '0': true };
        for (var i = 0; i < path.length; i++) {
            num += map[path[i]];
            if (visited[num]) return true;
            visited[num] = true;
        }
        return false;
    };
    

    Explain:

    nope.

    Complexity: