LeetCode 刷题笔记 - 9. 回文数

374 阅读1分钟

难度:

简单

描述:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例

1:
输入: 121
输出: true
2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/pa… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


语言:

swift

解析:

又到回文数了,回文数就是翻过来倒过去都一样。很明显负数不是,先 pass 掉。然后判断正数,这里我用到了一个办法,我去构造两个数字,比较回文数的左右部分是否相等。left为数字的左半部分,right为该数字的右部分的倒序。本题比较简单,就是求10的余数等等相关操作。同样需要注意原数字的长度为奇数还是偶数。

代码如下:

class Solution {
    func isPalindrome(_ x: Int) -> Bool {
        if x < 0 {
            return false
        }
        var left = x, right = 0, index = 0
        let numberLength = String(x).count
        while index < numberLength / 2 {
            let end = left % 10
            right = right * 10 + end
            left /= 10
            index += 1
        }
        if numberLength % 2 != 0 {
            left /= 10
        }
        if left == right {
            return true
        } else {
            return false
        }
    }
}

总结

没啥可总结的。