博文中会简要介绍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;
}
};