LeetCode 1041. Robot Bounded In Circle
考点 | 难度 |
---|---|
Trie | Medium |
题目
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 degrees 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.
思路
用x
, y
和directions
记录robot所在位置和方向。如果最后回到原点,返回true
。如果最后没有返回原点而且方向是north,返回false
。其余情况返回true
。
答案
public boolean isRobotBounded(String instructions) {
if (instructions.length() == 0)
return false;
int x = 0;
int y = 0;
String directions = "North";
for (char ch: instructions.toCharArray()) {
if (ch == 'G') {
if (directions.equals("North"))
y += 1;
else if (directions.equals("South"))
y -= 1;
else if(directions.equals("East"))
x += 1;
else
x -= 1;
}
else if (ch == 'L') {
if (directions.equals("North"))
directions = "West";
else if (directions.equals("West"))
directions = "South";
else if (directions.equals("South"))
directions = "East";
else directions = "North";
}
else if (ch == 'R') {
if (directions.equals("North"))
directions = "East";
else if (directions.equals("East"))
directions = "South";
else if (directions.equals("South"))
directions = "West";
else directions = "North";
}
}
if (x == 0 && y == 0)
return true;
if (directions.equals("North"))
return false;
return true;
}