当前位置: 面试刷题>> 机器人能否返回原点 (经典算法题500道)


题目描述补充

题目:机器人能否返回原点

在一个二维平面上,有一个机器人从原点 (0, 0) 出发。该机器人可以执行一系列移动指令,每个指令可能是向左移动一步(L),向右移动一步(R),向上移动一步(U),或向下移动一步(D)。请编写一个函数来判断给定的指令序列执行后,机器人是否能返回到原点 (0, 0)

示例

输入"UDDLRU"

输出true

解释:机器人按 "UDDLRU" 顺序移动,依次是向上(U)、向下(D)、向下(D)、向左(L)、向右(R)、向上(U),最终返回原点 (0, 0)

PHP 示例代码

function robotReturnsToOrigin($moves) {
    $x = 0; // 初始位置 x 坐标
    $y = 0; // 初始位置 y 坐标
    
    // 遍历指令序列
    for ($i = 0; $i < strlen($moves); $i++) {
        switch ($moves[$i]) {
            case 'U':
                $y++; // 向上移动,y 坐标增加
                break;
            case 'D':
                $y--; // 向下移动,y 坐标减少
                break;
            case 'L':
                $x--; // 向左移动,x 坐标减少
                break;
            case 'R':
                $x++; // 向右移动,x 坐标增加
                break;
        }
    }
    
    // 如果最终 x 和 y 坐标都为 0,则返回原点
    return $x === 0 && $y === 0;
}

// 测试示例
echo robotReturnsToOrigin("UDDLRU") ? "true" : "false"; // 输出 true

Python 示例代码

def robot_returns_to_origin(moves):
    x, y = 0, 0 # 初始位置 (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

# 测试示例
print(robot_returns_to_origin("UDDLRU")) # 输出 True

JavaScript 示例代码

function robotReturnsToOrigin(moves) {
    let x = 0; // 初始位置 x 坐标
    let y = 0; // 初始位置 y 坐标
    
    // 遍历指令序列
    for (let i = 0; i < moves.length; i++) {
        if (moves[i] === 'U') {
            y++; // 向上移动
        } else if (moves[i] === 'D') {
            y--; // 向下移动
        } else if (moves[i] === 'L') {
            x--; // 向左移动
        } else if (moves[i] === 'R') {
            x++; // 向右移动
        }
    }
    
    // 检查是否返回原点
    return x === 0 && y === 0;
}

// 测试示例
console.log(robotReturnsToOrigin("UDDLRU")); // 输出 true

码小课网站中有更多关于算法和数据结构的内容分享给大家学习,可以帮助你更好地理解并掌握各种编程问题。

推荐面试题