LeetCode - #9 判断回文数字

2021-12-06 13:46:55 浏览数 (1)

前言

1. 描述

给定一个整数 x,如果 x 是回文整数,则返回 true

当一个整数向后读与向前读相同时,它就是回文。例如,121 是回文,而 123 不是。

2. 示例

示例 1

代码语言:javascript复制
输入:  x = 121
输出:  真

示例 2

代码语言:javascript复制
输入:  x = -121
输出:  假
说明:  从左到右依次为 -121。 从右到左,它变成 121-。 因此它不是回文。

示例 3

代码语言:javascript复制
输入:x = 10
输出: 假
说明: 从右到左读取 01。 因此它不是回文。

示例 4

代码语言:javascript复制
输入:x = -101
输出: 假

约束条件:

  • -2^31 <= x <= 2^31 - 1

**跟进:**你能在不将整数转换为字符串的情况下解决它吗?

3. 答案

代码语言:javascript复制
class PalindromeNumber {
    func isPalindrome(x: Int) -> Bool {
        guard x >= 0 else {
            return false
        }
        var x = x
        var div = 1
        while (x / div >= 10) {
            div = div * 10
        }
        while (x > 0) {
            var left = x / div
            var right = x % 10
            if (left != right) {
                return false
            }
            x = (x % div) / 10
            div = div / 100
        }
        return true
    }
}
  • 主要思想:负数不是回文。
  • 时间复杂度:O(1)
  • 空间复杂度:O(1)

该算法题解的仓库:LeetCode-Swift[2]

点击前往 LeetCode[3] 练习

参考资料

[1]

@故胤道长: https://m.weibo.cn/u/1827884772

[2]

LeetCode-Swift: https://github.com/soapyigu/LeetCode-Swift

[3]

LeetCode: https://leetcode.com/problems/palindrome-number/

0 人点赞