> For the complete documentation index, see [llms.txt](https://quenluo.gitbook.io/leecode-python/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://quenluo.gitbook.io/leecode-python/657.-robot-return-to-origin.md).

# 657. Robot Return to Origin

## Problem 657

<https://leetcode.com/problems/robot-return-to-origin/>

There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its moves, judge if this robot **ends up at (0, 0)** after it completes its moves.

The move sequence is represented by a string, and the character moves\[i] represents its ith move. Valid moves are R (right), L (left), U (up), and D (down). If the robot returns to the origin after it finishes all of its moves, return true. Otherwise, return false.

**Example 1:**

```
Input: "UD"
Output: true 
Explanation: The robot moves up once, and then down once. All moves have the same magnitude, so it ended up at the origin where it started. Therefore, we return true.
```

## Solution

{% tabs %}
{% tab title="Complex Number" %}

```python
class Solution_ComplexNumber(object):
    def judgeCircle(self, moves):
        """
        :type moves: str
        :rtype: bool
        """
        walk = {'U':1,'D':-1,'L':1j,'R':-1j}
        
        return sum( walk[move] for move in moves ) == 0
```

{% endtab %}

{% tab title="dictionary" %}

```python
class Solution(object):
    def judgeCircle(self, moves):

        walk = {'U':1,'L':1,'D':-1,'R':-1}
        stepLR, stepUD = 0, 0
        for move in moves:
            if move in ['L','R']:
                stepLR += walk[move]
            else:
                stepUD += walk[move]
        
        return (stepUD==0) & (stepLR==0)
```

{% endtab %}

{% tab title="count" %}

```python
class Solution_count(object):
    def judgeCircle(self, moves):
        
        return moves.count('L') == moves.count('R') and moves.count('U') == moves.count('D')
```

{% endtab %}

{% tab title="Collection" %}

```python
class Solution_collection(object):
    def judgeCircle(self, moves):

        walk = collections.Counter(moves)
        return walk['L'] == walk['R'] and walk['U'] == walk['D']
```

{% endtab %}
{% endtabs %}
