刷题

1041. 困于环中的机器人

困于环中的机器人

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public:
bool isRobotBounded(string instructions) {
int X[]{0,-1,0,1},y[]{1,0,-1,0};
int px(0),py(0),z(0),flag(0);
instructions=instructions+instructions+instructions+instructions;//如果为一条循环指令,那么值至少是完整周期的1/4
for(auto x:instructions)
{
if(x=='G')
{
px+=X[z];
py+=y[z];
}
else if(x=='L')
{
z=(z+1)%4;
flag++;
}
else
{
z=(z+3)%4;
flag--;
}
}

return !px&&!py;
}

};

解释:因为一次是90°,如果机器人能一直在环中,那么若干条指令后会恢复初始状态,所以一条指令最多是1/4分之一的周期,不可能是1/5之类的,应为方向回到最初之后如果还没回到最初位置就说明在偏移。