您的位置:首页 > 编程语言 > C语言/C++

每日一练之Palindrome Number【LeetCode No.9】—判断是否为回文数

2017-04-19 10:55 489 查看
Determine whether an integer is a palindrome. Do this without extra space.

click to show spoilers.

Some hints:
Could negative integers be palindromes? (ie, -1)
If you are thinking of converting the integer to string, note the restriction of using extra space.
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?
There is a more generic way of solving this problem.

//分析:判断一个整数是否为回文数,但题目要求不能使用额外的空间,使用数字翻转法也要考虑是否会溢出的问题,所以选择更通用的方法-数字位判断法,先判断第一位和最后一位是否相等,相等则继续判断,否则直接返回false.

数字翻转法(可能会溢出):

public class Solution {
public boolean isPalindrome(int x) {
int a = x, r = 0;

if (x < 0) return false;

while (a > 0) {
r = r*10 + a%10;
a = a / 10;
}

return r == x;
}
}

数字位判断法(更通用):

class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
int div=1;
while (x/div>=10){
div*=10;}

while(x!=0){
int first_wei=x/div;
int last_wei=x%10;
if(first_wei!=last_wei) return false;
x=x%div/10;
div/=100;
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ leetcode