乐趣区

关于leetcode:leetcode之判断路径是否相交

本文次要记录一下 leetcode 之判断门路是否相交

题目

 给你一个字符串 path,其中 path[i] 的值能够是 'N'、'S'、'E' 或者 'W',别离示意向北、向南、向东、向西挪动一个单位。机器人从二维立体上的原点 (0, 0) 处开始登程,按 path 所批示的门路行走。如果门路在任何地位上呈现相交的状况,也就是走到之前曾经走过的地位,请返回 True;否则,返回 False。起源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-crossing
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

题解

class Solution {public boolean isPathCrossing(String path) {
        int x = 0;
        int y = 0;
        Set<String> pathSet = new HashSet<String>();
        pathSet.add("00");
        for (char c : path.toCharArray()) {if (c == 'N') {y++;} else if (c == 'S') {y--;} else if (c == 'W') {x--;} else if (c == 'E') {x++;}
            String p = String.valueOf(x) + String.valueOf(y);
            if (pathSet.contains(p)) {return true;}
            pathSet.add(p);
        }
        return false;
    }
}

小结

这里保护走过的点,而后遍历 path 的字符,对 x,y 坐标进行相应挪动,每次挪动之后都判断下该点是否走过,走过则返回 true,没有则将改点记录到走过的的点中,遍历完都没有符合条件就返回 false。

doc

  • 判断门路是否相交
退出移动版