题目
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
分析及解答
class Solution {
public boolean judgeCircle(String moves) {
if(moves == null || moves == ""){
return true;
}
//0上,1下,2左,3右
//上下可抵消,左右可抵消。
//无需关注过程,由最终结果(如:向左走了多少步)便可判断。
//类似于: 投影到x,y坐标轴上
int[] directions = new int[4];
for(char ch : moves.toCharArray()){
if(ch == 'U'){
directions[0]++;
}else if(ch == 'D'){
directions[1]++;
}else if(ch == 'L'){
directions[2]++;
}else{
directions[3]++;
}
}
return directions[0] == directions[1]&& directions[2] == directions[3];
}
}