121 字 少于 1 分钟阅读

题目链接

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。

示例 1:

输入:x = 121
输出:true

示例 2:

输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。

提示:

  • -2^31 <= x <= 2^31 - 1

进阶:你能不将整数转为字符串来解决这个问题吗?

解法

取出后半段数字进行翻转,然后判断和前半部分进行对比。

class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0 || (x != 0 && x % 10 ==0)) {
            return false;
        }
        if (x < 10) {
            return true;
        }
        int revertNum = 0;
        while (x > revertNum) {
            revertNum *= 10;
            revertNum += x % 10;
            x /= 10;
        }
        return x == revertNum || x == revertNum / 10;
    }
}