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