📌  相关文章
📜  仅通过加号运动检查是否可以精确地Z步从原点到达(x,y)(1)

📅  最后修改于: 2023-12-03 15:06:29.422000             🧑  作者: Mango

仅通过加号运动检查是否可以精确地Z步从原点到达(x, y)

在二维平面上,机器人从原点出发。机器人可以运动到左、右、上、下四个方向。给定一个字符串moves表示机器人的运动路径,不含其他字符。判断机器人是否可以通过这些运动路径,精确地走Z步到达点(x, y)

思路

我们可以用两个变量 $x_{now}, y_{now}$ 来维护当前的位置,用一个变量 money 维护现在还可以往哪个方向走。

对于字符串 moves 中的每个字符,如果是'L'或者‘U',我们就需要相应地将位置 $x$ 和 $y$ 减 1,如果是 'R' 或者 ‘D',就需要将位置 $x$ 和 $y$ 加 1。

最后判断位置 $(x_{now}, y_{now})$ 是否等于 $(x, y)$ 即可。

需要特别注意的是,如果 moves 中出现了不在 {‘L', 'R', 'U', 'D'} 中的字母,我们直接视为走错路。

代码
def judge(moves: str, x: int, y: int) -> bool:
    x_now, y_now = 0, 0
    for i in moves:
        if i == 'L':
            x_now -= 1
        elif i == 'R':
            x_now += 1
        elif i == 'U':
            y_now += 1
        elif i == 'D':
            y_now -= 1
        else:
            return False
    return x_now == x and y_now == y
示例
print(judge('UURUURRR', 3, 1))  # True
print(judge('UU', 2, 2))  # False
print(judge('UDRL', 0, 0))  # True