Golang | Leetcode Golang题解之第9题回文数

题目:

题解:

Go 复制代码
func isPalindrome(x int) bool {
    // 特殊情况:
    // 如上所述,当 x < 0 时,x 不是回文数。
    // 同样地,如果数字的最后一位是 0,为了使该数字为回文,
    // 则其第一位数字也应该是 0
    // 只有 0 满足这一属性
    if x < 0 || (x % 10 == 0 && x != 0) {
        return false
    }

    revertedNumber := 0
    for x > revertedNumber {
        revertedNumber = revertedNumber * 10 + x % 10
        x /= 10
    }

    // 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。
    // 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,
    // 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
    return x == revertedNumber || x == revertedNumber / 10
}
相关推荐
花酒锄作田4 小时前
Go - Zerolog使用入门
golang
xlp666hub18 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
xlp666hub2 天前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
xlp666hub2 天前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
xlp666hub3 天前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode
花酒锄作田12 天前
Gin 框架中的规范响应格式设计与实现
golang·gin
琢磨先生David12 天前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
超级大福宝13 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
Charlie_lll13 天前
力扣解题-88. 合并两个有序数组
后端·算法·leetcode
菜鸡儿齐13 天前
leetcode-最小栈
java·算法·leetcode