机器人能否返回原点
小注释: 都说算法题刷的多了, 越做越熟练, 因为差不多都是那几个套路
今天碰到这个题目, 有点感触. 很快就解出来了, 虽然是简单题.
做这题之前, 遇到的是分割平衡字符串
有点类似, 所以能很快解出下面这道题
题目
在二维平面上, 有一个机器人从原点 (0, 0) 开始.
给出它的移动顺序, 判断这个机器人在完成移动后是否在?(0, 0) 处结束.
移动顺序由字符串表示. 字符 move[i] 表示其第 i 次移动.
机器人的有效动作有? R(右),L(左),U(上) 和 D(下).
如果机器人在完成所有动作后返回原点, 则返回 true. 否则, 返回 false.
注意: 机器人 "面朝" 的方向无关紧要.
"R" 将始终使机器人向右移动一次,"L" 将始终向左移动等.
此外, 假设每次移动机器人的移动幅度相同.
示例
示例 1:
输入: "UD"
输出: true
解释: 机器人向上移动一次, 然后向下移动一次. 所有动作都具有相同的幅度, 因此它最终回到它开始的原点. 因此, 我们返回 true.
示例 2:
输入: "LL"
输出: false
解释: 机器人向左移动两次. 它最终位于原点的左侧, 距原点有两次 "移动" 的距离. 我们返回 false, 因为它在移动结束时没有返回原点.
- let judgeCircle = function(moves) {
- let x = 0
- let y = 0
- for (let m of moves) {
- // 不考虑 X 轴情况, 在 Y 轴上, 向左多少步, 就向右多少步, 最后机器人肯定是回到原点
- if (m === 'U') {
- y++
- }
- if (m === 'D') {
- y--
- }
- // 不考虑 Y 轴情况, 在 X 轴上, 向左多少步, 就向右多少步, 最后机器人肯定是回到原点
- if (m === 'L') {
- x++
- }
- if (m === 'R') {
- x--
- }
- }
- // 最终 x 和 y 如果都等于 0, 那么可断定机器人回到原点
- return y === 0 && x === 0
- };
来源: http://www.bubuko.com/infodetail-3495202.html