657.机器人能否返回原点(Java)

题目描述

在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

移动顺序由字符串 moves 表示。字符 movei 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。

如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。

注意:机器人"面朝"的方向无关紧要。 "R" 将始终使机器人向右移动一次,"L" 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。

输入:

moves = "UD"

输出:

true

解释:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。

代码实现:

java 复制代码
//机器人能否回到原点
public class Main{
    public static void main(String[] args) {
        String moves = "UD";
        System.out.println(judgeCircle(moves));//true
    }

    public static boolean judgeCircle(String moves) {
        int horizon = 0;//水平偏移
        int vertical = 0;//垂直偏移
        //规定:向上为正,向右为正
        for (int i = 0; i < moves.length(); i++) {
            //根据字符串内容做位移变换
            char c = moves.charAt(i);
            if (c == 'U') {
                vertical++;
            } else if (c == 'D') {
                vertical--;
            } else if (c == 'R') {
                horizon++;
            } else if (c == 'L') {
                horizon--;
            }
        }
        //变化之后是否还在原点
        return horizon == 0 && vertical == 0;
    }
}
相关推荐
前鼻音太阳熊9 分钟前
【MES系统】MES为什么需要SSE?从设备实时监控谈Spring Boot流式推送设计
java·spring boot·后端
Lhappy嘻嘻12 分钟前
网络初识|基础入门:局域网广域网、IP 端口、TCP/IP 五层模型与封装解封装全过程
java·开发语言·网络·笔记·网络协议·tcp/ip
Java面试题总结16 分钟前
区间树:反向映射的前置数据结构
java·前端·数据结构
Wang's Blog26 分钟前
Go-Zero基础入门1: 微服务框架与选型分析
开发语言·微服务·golang
尚早立志31 分钟前
六)Spring Boot 源码研读之prepareContext 准备上下文
java·spring boot·后端·spring
Lhappy嘻嘻9 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
科技道人9 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
伊玛目的门徒9 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
QYR-分析10 小时前
机器人安全控制器行业高速扩容 本土替代迎来全新发展窗口期
人工智能·安全·机器人
多米哇卡11 小时前
WAIC现场|启元T1机器人亮相,支持轮足、四足形态自适应切换
机器人·启元t1机器人·waic展会