LeetCode 657. 機器人能否返回原點 | Python
阿新 • • 發佈:2020-08-28
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
實現結果
歡迎關注
公眾號 【書所集錄】