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

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;
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务