657. Judge Route Circle【easy】

657. Judge Route Circle【easy】

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

解法一:

 1 class Solution {
 2 public:
 3     bool judgeCircle(string moves) {
 4         int h = 0;
 5         int w = 0;
 6         
 7         for (int i = 0; i < moves.length(); ++i) {
 8             if (moves[i] == 'U') {
 9                 h++;
10             } else if (moves[i] == 'D') {
11                 h--;
12             } else if (moves[i] == 'R') {
13                 w++;
14             } else if (moves[i] == 'L') {
15                 w--;
16             }
17         }
18         
19         return (h == 0 && w == 0);
20     }
21 };

解法二:

1 class Solution {
2 public:
3     bool judgeCircle(string moves) {
4         unordered_map<char, int> c;
5         for ( char m : moves )
6             ++c[m];
7         return c['L'] == c['R'] && c['U'] == c['D'];
8     }
9 };

参考@zqfan 的代码。

原文地址:https://www.cnblogs.com/abc-begin/p/7582080.html