Leetcode P0009"Palindrome Number" 题解

2020/08/16 Leetcode

博文中会简要介绍Leetcode P0009题目分析及解题思路。

“Palindrome Number”是一道比较简单的纯数学问题,主要考察在不将整型转换为字符串的情况下,判断整型是否为回文数,题干如下:

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

最简单的思路是,所有负数或者非0的十倍数显然不是回文数。除此之外,将给定的整型从个位数开始,生成其翻转的整型数,两数做差,如果结果非0,则原数显然不是回文数。最后需注意整型溢出的问题。

以下是Java的题解代码实现。

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 || (x > 0 && x%10 == 0))
            return false;
        
        int reverse = 0;
        int temp = x;
        while (temp > 0) {
            int digit = temp % 10;
            temp = temp / 10;
            
            reverse = reverse*10+digit;
        }
        
        return (x-reverse == 0)? true: false;
    }
}

以下是C++的题解代码实现。

class Solution {
public:
    bool isPalindrome(int x) {
        if (x < 0 || (x > 0 && x%10 == 0))
            return false;
        
        int reverse = 0;
        int temp = x;
        while (temp > 0) {
            int digit = temp % 10;
            temp = temp / 10;
            
            if (reverse*10L > INT_MAX) 
                return false;
            
            reverse = reverse*10+digit;
        }
        
        return (x-reverse == 0)? true: false;
    }
};

Search

    Table of Contents