题目链接:
https://leetcode.cn/problems/robot-bounded-in-circle/description/?envType=study-plan-v2&envId=programming-skills
思路:
首先,题目要寻找的是成环的情况。
1.如果经历一次指令后的方向仍为北方,要使得机器人循环困住,必须让机器人回到原点
2.如果经历一次指令后的方向不是北方,那么最多重复四次又会回到面朝北方,这种情况下机器人虽然不会回到原点,但是也一直都被环困住。
代码采用了常用的二维平面的向量坐标写法。
代码:
class Solution {public boolean isRobotBounded(String instructions) {//记录 0 1 2 3// 北东南西 坐标向量写法int [][] res = {{0,1},{1,0},{0,-1},{-1,0}};int n = instructions.length();int x = 0,y = 0;//记录坐标int faceDirect = 0;//记录朝向 一开始为0 表示指向北for(int i = 0;i<n;i++) {//直走命令if(instructions.charAt(i)=='G') {x+=res[faceDirect][0];y+=res[faceDirect][1];}//左转命令else if(instructions.charAt(i)=='L') {faceDirect = (faceDirect+3)%4;}//右转命令else if(instructions.charAt(i)=='R') {faceDirect = (faceDirect+1)%4;}}if( (x==0 && y==0)|| faceDirect!=0)return true;return false;}
}