On an infinite plane, a robot initially stands at (0, 0) and faces north. The robot can receive one of three instructions:
"G": go straight 1 unit;
"L": turn 90 degrees to the left;
"R": turn 90 degress to the right.
The robot performs the instructions given in order, and repeats them forever.Return true if and only if there exists a circle in the plane such that the robot never leaves the circle.
Example 1:Input: "GGLLGG"
Output: true
Explanation:
The robot moves from (0,0) to (0,2), turns 180 degrees, and then returns to (0,0).
When repeating these instructions, the robot remains in the circle of radius 2 centered at the origin.
Example 2:
Input: "GG"
Output: false
Explanation:
The robot moves north indefinitely.
Example 3:
Input: "GL"
Output: true
Explanation:
The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...
class Solution {
public boolean isRobotBounded(String instructions) {
if(instructions==null)
return false;
int x=0,y=0;
String dir="North";
for(char ch:instructions.toCharArray()){
if(ch=='G'){
if(dir.equals("North"))
y+=1;
else if(dir.equals("South"))
y-=1;
else if(dir.equals("West"))
x-=1;
else
x+=1;
}
else if(ch=='L'){
if(dir.equals("North"))
dir="West";
else if(dir.equals("South"))
dir="East";
else if(dir.equals("West"))
dir="South";
else
dir="North";
}
else if(ch=='R'){
if(dir.equals("North"))
dir="East";
else if(dir.equals("South"))
dir="West";
else if(dir.equals("West"))
dir="North";
else
dir="South";
}
}
if(x==0 && y==0)
return true;
if(dir.equals("North"))
return false;
return true;
}
}