func isPalindrome(_ x:Int) -> Bool {
//首先要排除直接就不符合回文数的条件
if x < 0 || x % 10 == 0 && x != 0 {
return false
}
var num = x
var reserse = 0
//控制反转数字回转为输入数字的一半,然后反转的相当于是后半部分,然后首尾相比较
while reserse < num {
reserse = reserse * 10 + num % 10
num = num / 10
}
//num == reserse / 10 是针对是奇数位的整数处理,奇数位反转后之后末尾的会多了1位数
return reserse == num || num == reserse / 10
}
//时间复杂度:O(log10(n))
网友评论