一、题目描述
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
思路:设置初始点的坐标为x=0,y=0,从坐标系的角度来看,Up就是y+1,DOWN就是y-1,Left就是x-1,Right就是x+1,因此按照字符串中的指示走,最后判断x和y的值是否等于(0,0)即可。
AC代码(c++版):
class Solution {
public:
bool judgeCircle(string moves) {
int x=0, y=0;
int len = moves.size();
if(len <= 1){
return false;
}
int i;
for(i=0;i<len;++i){
switch(moves[i]){
case 'U': y++; break;
case 'D': y--; break;
case 'L': x--; break;
case 'R': x++; break;
}
}//for
if(x==0 && y==0){
return true;
}
return false;
}
};
go语言版代码
func judgeCircle(moves string) bool {
n := len(moves)
count1 := 0
count2 := 0
for i:=0;i<n;i++{
switch moves[i]{
case 'L':
count1++
case 'R':
count1--
case 'U':
count2++
case 'D':
count2--
}
}
if count1==0 && count2==0{
return true
}else{
return false
}
}