在无限的平面上,机器人最初位于 (0, 0)
处,面朝北方。机器人可以接受下列三条指令之一:
"G"
:直走 1 个单位"L"
:左转 90 度"R"
:右转 90 度
机器人按顺序执行指令 instructions
,并一直重复它们。
只有在平面中存在环使得机器人永远无法离开时,返回 true
。否则,返回 false
。
class Solution {
public:
bool isRobotBounded(string instructions) {
int direction=0; //代表方向, 0向北,1向西,2向南,3向东
int runnum=4; //循环运行次数4
int length[4]={0,0,0,0}; //记录四个方向上的步数
while(runnum--){
for(int i=0;i<instructions.length();i++){
if(instructions[i]=='L'){direction++;} //左拐弯 方向+
if(instructions[i]=='R'){direction--;} //右拐弯 方向-
if(direction < 0) {direction = direction + 4;} //如果方向变成负数, +4, 类似于一个4个方向循环移位的过程
if(direction > 3) {direction = direction % 4;} //如果方向大于4, 取模
if(instructions[i]=='G'){++length[direction];} //在某一方向上计步
}
if(length[0]-length[2]==0 && length[1]-length[3]==0){return true;}//向北走-向南走 && 向西走-向东走
}
return false;
}
};
runnum是4, 对于类似于"GL"这样的.