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
这题的意思就是一个机器人在(0,0)点,经过上下左右移动后是否回到原点。上下左右移动通过字符串操作。
代码:
class Solution(object):
def judgeCircle(self, moves):
"""
:type moves: str
:rtype: bool
"""
left_right=0
down_up=0
for i in range(len(moves)):
if(moves[i]=='R'): left_right=left_right+1
if (moves[i] == 'L'): left_right = left_right - 1
if(moves[i]=='U'): down_up=down_up+1
if(moves[i]=='D'): down_up=down_up-1
if(left_right==0 and down_up==0):return True
else: return False
s=Solution()
print(s.judgeCircle("DURDLDRRLL"))
思路就是通过两个变量来判断是否最终状态是移动过了的。
当然还有更简单的一行解决的代码:
def judgeCircle(self, moves):
return moves.count('L') == moves.count('R') and moves.count('U') == moves.count('D')