657. Robot Return to Origin

Link: 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.

Note: The way that the robot is “facing” is irrelevant. “R” will always make the robot move to the right once, “L” will always make it move left, etc. Also, assume that the magnitude of the robot’s movement is the same for each move.

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.

Example 2:

Input: "LL"
Output: false
Explanation: The robot moves left twice. It ends up two "moves" to the left of the origin. We return false because it is not at the origin at the end of its moves.

題目翻譯:

在 2D 平面上有一個從位置(0,0)開始的機器人。給定其移動序列,判斷該機器人在完成移動後是否在(0,0)處結束。

移動序列由字符串表示,字符 move [i]表示其第 i 個移動。有效移動是 R(右),L(左),U(上)和 D(下)。如果機器人在完成所有移動後返回原點,則返回 true。否則,返回 false。

注意:機器人“面對”的方式無關緊要。 “R”將始終使機器人向右移動一次,“L”將始終向左移動等。此外,假設每次移動機器人的移動幅度相同。

程式思路:

簡單的+1-1 的題目。

class Solution {
public:
    bool judgeCircle(string moves) {
        int x = 0,y = 0;
        for(auto c : moves)
        {
            switch(c)
            {
                case 'R':
                    x++;
                    break;
                case 'L':
                    x--;
                    break;
                case 'U':
                    y++;
                    break;
                case 'D':
                    y--;
                    break;
                default:
                    break;
            }
        }
        return (x == 0 && y==0);
    }
};

  目錄