回文数-09

2021-06-09  本文已影响0人  smile_frank
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))
上一篇下一篇

猜你喜欢

热点阅读