# 657 Judge Route Circle

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
```

**The Idea:** Left, right and up, down are complements of one another. This means they can cancel each other out.

**Complexity:** O(n) time and O(1) space

```cpp
bool judgeCircle(string moves) {
    int vertical = 0, horizontal = 0;
    for (char c : moves) {
        switch (c) {
        case 'L':
            horizontal--; break;
        case 'R':
            horizontal++; break;
        case 'U':
            vertical++; break;
        case 'D':
            vertical--; break;
        }
    }
    return vertical == 0 && horizontal == 0;
}
```
