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
四个方向的操作相当于对横纵坐标进行变换,显然,返回原点的情况是左右位移次数相等、上下位移次数相等
上一题在python中用到了统计字符串中某一元素个数的count函数,正好可以使用
class Solution(object):
def judgeCircle(self, moves):
"""
:type moves: str
:rtype: bool
"""
l = moves.count('L')
r = moves.count('R')
u = moves.count('U')
d = moves.count('D')
if (l==r) and (u==d):
return True
else:
return False
C++类似,遍历字符串所有的元素计数比较
class Solution {
public:
bool judgeCircle(string moves) {
int l = 0, r = 0, u = 0, d = 0, i = 0;
for(i = 0; moves[i] != '\0'; i++){
if(moves[i]=='L')
l += 1;
else if(moves[i]=='R')
r += 1;
else if(moves[i]=='U')
u += 1;
else
d += 1;
}
return (l==r)&&(u==d);
}
};