Judge Route Circle
Description:
Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back to the original place.
The move sequence is represented by a string. And each move is represent by a character. The valid robot moves are R
(Right), L
(Left), U
(Up) and D
(down). The output should be true or false representing whether the robot makes a circle.
Example 1:
Input: "UD"
Output: true
Example 2:
Input: "LL"
Output: false
问题描述:
机器人在原点,有一段指令,包括上下左右,判断它通过一段指令后是否回到了原点。
Solution:
将机器人放在x-y坐标轴上进行运动:上y+1,下y-1,左x-1,右x+1.
机器人要回到原点,指令的数量一定是2的倍数,并且向左的移动量 = 向右的移动量,向上的移动量 = 向下的移动量。如果机器人经过一系列指令,回到原点,x = 0&&y = 0.代码如下:
class Solution {
public boolean judgeCircle(String moves) {
int length = moves.length();
if(length % 2 == 0){
int x = 0;
int y = 0;
for(char ch : moves.toCharArray()){
switch(ch){
case 'U': y++; break;
case 'D': y--; break;
case 'L': x--; break;
case 'R': x++; break;
}
}
return x==0 && y==0;
}
return false;
}
}