力扣 算法题 机器人能否返回原点

题目描述:

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

移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。

例题描述:

题目分析:

这道题就是机器人会向上,向左,向右,向下走,最后如果回到了原点,那么就返回true,否则返回false

解题思路:

首先,如果说走的步数是奇数的话,那么他一定是false;如果是偶数则需要判断,上下走的数应该相等,左右走的数也相等,那么就回到了原地

代码如下:

var judgeCircle = function(moves) {
    var a=0;var b=0
    if(moves.length%2!=0){
        return false
    }else{
        var num =moves.split()
        for(var i=0;i<num.length;i++){
            if(num[i] =="U"){a++ }
            if(num[i] =="D") a--
            if(num[i] =="L") b++ 
            if(num[i] =="R") b--
        }
        if(a==0 && b==0)  return true
        else return false
    }
};

但是仔细看这个代码发现一个问题,就是没有必要再去判断moves字符串是否是偶数,直接使用下面的代码即可:

var judgeCircle = function(moves) {
    var a=0;var b=0
    var num =moves.split()
    for(var i=0;i<num.length;i++){
        if(num[i] =="U"){a++ }
        if(num[i] =="D") a--
        if(num[i] =="L") b++ 
        if(num[i] =="R") b--
    }
    if(a==0 && b==0)  return true
    else return false
};
经验分享 程序员 微信小程序 职场和发展