题目链接:
思路:
首先,题目要寻找的是成环的情况。
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;
}
}