美文网首页
IOS 算法(基础篇) ----- 机器人路线

IOS 算法(基础篇) ----- 机器人路线

作者: ShawnAlex | 来源:发表于2020-08-28 10:11 被阅读0次

今天更新一道简简单单机器人走路的问题

机器人初始坐标(0, 0), 机器人可以向上下左右 (U, D, L, R)移动,
那么给定字符串 moves, 判断机器人走完能否回到原点

例如:
moves = "UD", 返回 true
moves = "RLD", 返回 false
moves = "RLDU", 返回 true

解题思路

第一种方法
模仿机器人走路, 初始原点(0, 0) 上+1, 下-1, 左+1, 右-1, 进行处理

代码

    func judgeCircle(_ moves: String) -> Bool {

        var v = 0, h = 0
        moves.map {
            switch $0 {
            case "U":
                v += 1
            case "D":
                v -= 1
            case "L":
                h += 1
            case "R":
                h -= 1
            default: break
            }
        }
        return v==0 && h==0

    }

第二种方法
如果能到原点, 则说明左出现次数等于右出现次数, 上出现次数等于下出现次数
那么我们判断字符串之中 U次数 == D次数, R次数 == L次数 即可
代码

    func judgeCircle(_ moves: String) -> Bool {

        var R = 0, L = 0, U = 0, D = 0;
        moves.map {
                    switch $0 {
                    case "U":
                        R += 1
                    case "D":
                        L += 1
                    case "L":
                        U += 1
                    case "R":
                        D += 1
                    default: break
                    }
                }
        return R==L && U==D

    }
    func judgeCircle(_ moves: String) -> Bool {

        var R = 0, L = 0, U = 0, D = 0; 
        let arr = moves.map{ $0 }
        for i in 0..<arr.count {
            if(arr[i] == "R"){
                R += 1
            }else if(arr[i] == "L"){
                L += 1
            }else if(arr[i] == "U"){
                U += 1
            }else if(arr[i] == "D"){
                D += 1
            }
        }
        return R==L && U==D

    }

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

相关文章

网友评论

      本文标题:IOS 算法(基础篇) ----- 机器人路线

      本文链接:https://www.haomeiwen.com/subject/owgksktx.html