1. 程式人生 > >【leetcode】657. Robot Return to Origin

【leetcode】657. Robot Return to Origin

因此 註意 note 相同 ++ ant return art posit

Algorithm

【leetcode】657. Robot Return to Origin

https://leetcode.com/problems/robot-return-to-origin/

1)problem

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.

機器人從位置(0,0)開始,在2D平面上開始。給定一系列動作,判斷該機器人在完成動作後是否在(0,0)結束。

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

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

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.

機器人向左移動兩次。它最終在原點的左邊有兩個“移動”。我們返回false,因為它不是在它移動結束時的原點。

2)answer

只需要兩個變量記錄水平方向和垂直方向是否最後處在原點即可;

3)solution

#include "pch.h"
#include <iostream>
#include <string>
using std::string;

class Solution {
public:
    bool judgeCircle(string moves) {
        int y = 0;
        int x = 0;

        for (int i = 0; i<moves.length();i++)
        {
            switch (moves.at(i))
            {
                case 'U':{ y++; } break;
                case 'D':{ y--; } break;
                case 'L':{ x--; } break;
                case 'R': {x++; } break;
            default:
                break;
            }
        }
        if (x == 0 && y == 0)
        {
            return  true;
        }
        return false;

    }
};

int main()
{
    std::cout << "Hello World!\n"; 

    Solution s;
    s.judgeCircle("UD");
}

【leetcode】657. Robot Return to Origin