LeetCode算法题-Robot Return to Origin(Java实现)
这是悦乐书的第281次更新,第298篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第149题(顺位题号是657)。在2D平面上有一个从位置(0,0)开始的机器人。给定其移动序列,判断该机器人在完成移动后是否在(0,0)处结束。移动序列由字符串表示,字符move [i]表示其第i个移动。有效移动是R(右),L(左),U(上)和D(下)。如果机器人在完成所有移动后返回原点,则返回true。否则,返回false。
注意:机器人的“朝向”无关紧要。 “R”将始终使机器人向右移动一次,“L”将始终向左移动一次等。此外,假设每次移动机器人的移动幅度相同。
例如:
输入:“UD”
输出:true
说明:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终位于它开始的原点。因此,我们返回true。
输入:“LL”
输出:false
说明:机器人向左移动两次。它最终在原点的左边有两个“moves”。我们返回false,因为它在移动结束时不在原点。
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 第一种解法
题目的意思是根据给的移动步数,判断机器人在移动完后是否还在原地。要想始终在原地,即向左和向右的步数相等,并且向上和向下的步数也要相等。因此,我们直接使用记数,将向左、向右、向上、向下的步数都记录下来,然后判断两两是否相等即可。
public boolean judgeCircle(String moves) {
if (moves.length()%2 != 0) {
return false;
}
int L = 0;
int R = 0;
int U = 0;
int D = 0;
for (int i=0; i<moves.length(); i++) {
if ("L".equals(moves.charAt(i)+"")) {
L++;
} else if ("R".equals(moves.charAt(i)+"")) {
R++;
} else if ("U".equals(moves.charAt(i)+"")) {
U++;
} else if ("D".equals(moves.charAt(i)+"")) {
D++;
}
}
return L == R && U == D;
}
03 第二种解法
对上面的第一种解法,我们还可以再简化下,只使用两个临时变量,因为可以将向左和向右相抵,将向上和向下相抵,最后判断这两变量是否等于0即可。
public boolean judgeCircle(String moves) {
if (moves.length()%2 != 0) {
return false;
}
int x = 0, y = 0;
for (char ch : moves.toCharArray()) {
if (ch == 'L') {
x--;
} else if(ch == 'R'){
x++;
}else if(ch == 'D'){
y++;
} else if(ch == 'U'){
y--;
}
}
return x == 0 && y == 0;
}
04 小结
此题本质上是一个记数题,只要理解题目要表达的意思,一切都很简单。
算法专题目前已日更超过四个月,算法题文章149+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode算法题-Robot Return to Origin(Java实现)的更多相关文章
- 【leetcode】657. Robot Return to Origin
Algorithm [leetcode]657. Robot Return to Origin https://leetcode.com/problems/robot-return-to-origin ...
- LeetCode算法题-Subdomain Visit Count(Java实现)
这是悦乐书的第320次更新,第341篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811).像"discuss.leetcode.com& ...
- LeetCode算法题-Letter Case Permutation(Java实现)
这是悦乐书的第315次更新,第336篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第184题(顺位题号是784).给定一个字符串S,将每个字母单独转换为小写或大写以创建另 ...
- LeetCode算法题-Jewels and Stones(Java实现)
这是悦乐书的第313次更新,第334篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第182题(顺位题号是771).字符串J代表珠宝,S代表你拥有的石头.S中的每个字符都是 ...
- LeetCode算法题-Reach a Number(Java实现)
这是悦乐书的第310次更新,第331篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第179题(顺位题号是754).你站在无限数字线的0号位置.在目的地有个target.在 ...
- LeetCode算法题-Shortest Completing Word(Java实现)
这是悦乐书的第309次更新,第330篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第178题(顺位题号是748).从给定的字典单词中查找最小长度单词,其中包含字符串lic ...
- LeetCode算法题-Self Dividing Numbers(Java实现)
这是悦乐书的第305次更新,第324篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第173题(顺位题号是728).自分割数是一个可被其包含的每个数字整除的数字.例如,12 ...
- LeetCode算法题-Find Pivot Index(Java实现)
这是悦乐书的第304次更新,第323篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第172题(顺位题号是724).给定一个整数nums数组,编写一个返回此数组的" ...
- LeetCode算法题-To Lower Case(Java实现)
这是悦乐书的第301次更新,第320篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第169题(顺位题号是709).实现具有字符串参数str的函数ToLowerCase() ...
随机推荐
- Android 超高仿微信图片选择器 图片该这么加载
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39943731,本文出自:[张鸿洋的博客] 1.概述 关于手机图片加载器,在当今像 ...
- CSS透明opacity和IE各版本透明度滤镜filter的准确用法
滤镜名 说明 Alpha 让HTML元件呈现出透明的渐进效果Blur 让HTML元件产生风吹模糊的效果Chroma 让图像中的某一颜色变成透明色DropShadow ...
- 关于Kafka日志留存策略的讨论
关于Kafka日志留存(log retention)策略的介绍,网上已有很多文章.不过目前其策略已然发生了一些变化,故本文针对较新版本的Kafka做一次统一的讨论.如果没有显式说明,本文一律以Kafk ...
- go语言nsq源码解读九 tcp和http中channel、topic的增删
通过前面多篇文章,nsqlookupd基本已经解读完毕了,不过在关于channel和topic的增删上还比较模糊,所以本篇将站在宏观的角度来总结一下,tcp.go和http.go两个文件中关于chan ...
- go语言 nsq源码解读三 nsqlookupd源码nsqlookupd.go
从本节开始,将逐步阅读nsq各模块的代码. 读一份代码,我的思路一般是: 1.了解用法,知道了怎么使用,对理解代码有宏观上有很大帮助. 2.了解各大模块的功能特点,同时再想想,如果让自己来实现这些模块 ...
- MySql-两阶段加锁协议
此篇博客主要是讲述MySql(仅限innodb)的两阶段加锁(2PL)协议,而非两阶段提交(2PC)协议,区别如下: 2PL,两阶段加锁协议:主要用于单机事务中的一致性与隔离性. 2PC,两阶段提交协 ...
- Python爬取南京市往年天气预报,使用pyecharts进行分析
上一次分享了使用matplotlib对爬取的豆瓣书籍排行榜进行分析,但是发现python本身自带的这个绘图分析库还是有一些局限,绘图不够美观等,在网上搜索了一波,发现现在有很多的支持python的绘图 ...
- VS2017 WinFrom打包设置与教程
前言 项目中有用到winfrom做配套的打印程序,直接给客户一个debug文件夹,当然不是很好.. 记录一下打包过程. 正文 首先需要下载 Visual Studio插件,到如图的地方下载: 搜索Mi ...
- OpenResty 在又拍云容器平台中的应用
大家好,我是又拍云叶靖,今天主要分享 OpenResty 在又拍云容器平台中的应用.目前又拍云有很多产品,其中很多都使用了 OpenResty 技术,比如又拍云的 CDN .网关都是基于 OpenRe ...
- C# 通俗说 哈希表
1.何谓哈希 哈希,也程散列.哈希表是一种与数组,链表等不同的数据结构,与他们需要不断的 遍历比较查找的办法,哈希表设计了一个映射关系发f(key)=adress,根据key来计算adress, 这样 ...