【每日一题】力扣 1496题 判断路径是否相交
给你一个字符串 path,其中 path[i] 的值可以是 'N'、'S'、'E' 或者 'W',分别表示向北、向南、向东、向西移动一个单位。
机器人从二维平面上的原点 (0, 0) 处开始出发,按 path 所指示的路径行走。
如果路径在任何位置上出现相交的情况,也就是走到之前已经走过的位置,请返回 True ;否则,返回 False 。
示例 1: 
输入:path = "NES"
输出:false
解释:该路径没有在任何位置相交。
示例 2:
输入:path = "NESWW"
输出:true
解释:该路径经过原点两次。
思路 :
用c++容器里面的map特性不重复来写,头文件是#include<map>。
map是STL的一个关联容器,它以<key,value>一对一的形式存储,且map的内部自建一个红黑树,使得其可以自动排序。
有三种方法对其进行遍历,1前向迭代器 2 反向迭代器 3 数组的形式。
代码后附带STL表。
代码:
class Solution { public: bool isPathCrossing(string path) { map<int,map<int,int>>div; int a = 0,b = 0; div[a][b] = 1; for(int i = 0;i < path.length();i++) { if(path[i] == 'N'){ a++; } if(path[i] == 'S'){ a--; } if(path[i] == 'E'){ b++; } if(path[i] == 'W'){ b--; } if(div[a][b]){ return true; } div[a][b] = 1; } return false; } };

-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

浙公网安备 33010602011771号