难度
简单
题目
判断一组数字是否为回数
Example 如下:
12321 return true
12345 return false
-12321 return false
思路
思路一
排除负数,将数字转为字符串,再用字符串的reversed()
方法转换,如果两个字符串相等,则为回数。
思路二
取出数字首尾进行比较,如相等则去除首尾继续比较
代码
方法一
func isPalindrome(_ x: Int) -> Bool {
if x < 0 {
return false
}
let intString = String(x)
let reverseString = String(intString.reversed())
return (intString == reverseString)
}
方法二
func isPalindrome(_ x: Int) -> Bool {
// 0. 排除负数
if x < 0 {
return false
}
// 1. 算出数字最大位数
var div = 1
while x / div >= 10 {
div *= 10
}
var value = x
while value != 0 {
// 2. 取出首尾数字进行比较
let l = value / div
let r = value % 10
if l != r {
return false
}
// 3. 去除 value 的首尾数字,同时最大位数也减少两位
value = (value % div) / 10
div /= 100
}
return true
}