LeetCode习题解析——Palindrome Number

发布自Kindem的博客,欢迎大家转载,但是要注意注明出处

问题

判断一个整数是否为回文数,不能使用辅助空间

一些提示:
负整数可以是回文数吗?(例如 -1)

如果你打算把整数转为字符串,请注意不允许使用辅助空间的限制。

你也可以考虑将数字颠倒。但是如果你已经解决了 “颠倒整数” 问题的话,就会注意到颠倒整数时可能会发生溢出。你怎么来解决这个问题呢?

本题有一种比较通用的解决方式。

解答

解题思路:

  • 负整数肯定不是回文数
  • 0一定是回文数
  • 正整数中判断是不是回文数,只需要求出其颠倒过来的数,并看两者是不是相等,相等则是回文数,否则则不是

java代码:

public class Solution {
    public boolean isPalindrome(int x) {
        // 如果x是负整数
        if (x < 0) return false;
        // 如果x是0
        else if (x == 0) return true;
        else {
            int backup = x;
            int y = 0;
            while (x != 0) {
                y = y * 10 + x % 10;
                x = x / 10;
            }
            return (y == backup);
        }
    }
}