1. 程式人生 > 實用技巧 >LeetCode 657. 機器人能否返回原點 | Python

LeetCode 657. 機器人能否返回原點 | Python

657. 機器人能否返回原點


題目來源:力扣(LeetCode)https://leetcode-cn.com/problems/robot-return-to-origin

題目


在二維平面上,有一個機器人從原點 (0, 0) 開始。給出它的移動順序,判斷這個機器人在完成移動後是否在 (0, 0) 處結束。

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

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

示例 1:

輸入: "UD"
輸出: true
解釋:機器人向上移動一次,然後向下移動一次。所有動作都具有相同的幅度,因此它最終回到它開始的原點。因此,我們返回 true。

示例 2:

輸入: "LL"
輸出: false
解釋:機器人向左移動兩次。它最終位於原點的左側,距原點有兩次 “移動” 的距離。我們返回 false,因為它在移動結束時沒有返回原點。

解題思路


思路:模擬

先看題目,題目要求,在給定移動順序後,機器人從原點 (0, 0) 出發,移動完畢後是否能夠回到原點。

其中,機器人可以移動範圍為四個方位,以下字母分別對應四個方位:

  • R(右)
  • L(左)
  • U(上)
  • D(下)

最後注意部分也額外說明,機器人回到原點無論面向哪個方位都可以。

那麼,我們的思路就是模擬機器人行走。在二維平面上。定義 x,y 軸,機器人從原點(0,0)出發。當指令為 R,U 表示機器人分別往 x,y 軸的正方向移動,L,D 表示機器人分別往 x,y 軸的負方向移動。圖示如下:

現在,定義變數 x,y,遍歷字串 moves,根據字串中的指令移動機器人,移動完畢,判斷機器人是否回到原點。做法如下:

  • 定義變數 x,y;
  • 遇到以下指令,更新 x,y:
    • 遇到 'R',x += 1;
    • 遇到 'L',x -= 1;
    • 遇到 'U',y += 1;
    • 遇到 'D',y -= 1;
  • 移動完畢,判斷是否回到原點,也就是 x,y 是否都為 0。

具體程式碼實現如下。

程式碼實現


class Solution:
    def judgeCircle(self, moves: str) -> bool:
        # 定義變數 x,y
        x = 0
        y = 0

        # 遍歷 moves,獲取每步移動指令
        for move in moves:
            # 對應 4 個方位指令,分別更新 x,y 的值
            if move == 'R':
                x += 1
            elif move == 'L':
                x -= 1
            elif move == 'U':
                y += 1
            elif move == 'D':
                y -= 1

        # 如果 x,y 的值都為 0,表示機器人回到原點
        if x == 0 and y == 0:
            return True
        return False

實現結果


歡迎關注


公眾號 【書所集錄