0657. 机器人能否返回原点
大约 2 分钟
---
0657. 机器人能否返回原点
- 标签:字符串、模拟
- 难度:简单
题目链接
题目大意
描述:
在二维平面上,有一个机器人从原点 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 处结束。
移动顺序由字符串 表示。字符 表示其第 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。
要求:
如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。
说明:
- 注意:机器人「面朝」的方向无关紧要。
R将始终使机器人向右移动一次,L将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。 - 。
- moves 只包含字符
'U','D','L'和'R'。
示例:
- 示例 1:
输入: moves = "UD"
输出: true
解释:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。- 示例 2:
输入: moves = "LL"
输出: false
解释:机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false,因为它在移动结束时没有返回原点。解题思路
思路 1:模拟
这道题目非常简单,只需要统计上下左右移动的次数,判断是否能回到原点。
- 初始化坐标 。
- 遍历移动序列中的每个字符:
- 如果是
'U', 加 1(向上移动)。 - 如果是
'D', 减 1(向下移动)。 - 如果是
'L', 减 1(向左移动)。 - 如果是
'R', 加 1(向右移动)。
- 如果是
- 判断最终坐标是否为 。
思路 1:代码
class Solution:
def judgeCircle(self, moves: str) -> bool:
x, y = 0, 0
for move in moves:
if move == 'U':
y += 1
elif move == 'D':
y -= 1
elif move == 'L':
x -= 1
elif move == 'R':
x += 1
return x == 0 and y == 0思路 1:复杂度分析
- 时间复杂度:,其中 是移动序列的长度。需要遍历所有移动指令。
- 空间复杂度:,只使用了常数级别的额外空间。