今天更新一道简简单单机器人走路的问题
机器人初始坐标(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 算法合集地址
网友评论