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 areR(Right),L(Left),U(Up) andD(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

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;
}

Last updated