每日一练之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;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务