标签:情况 style code font 第一个 通过 溢出 时间复杂度 额外
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
输入: 121
输出: true
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
你能不将整数转为字符串来解决这个问题吗?
按照第二个想法,为了避免数字反转可能导致的溢出问题,为什么不考虑只反转int数字的一半?毕竟,如果该数字是回文,其后半部分反转后应该与原始数字的前半部分相同。
例如,输入 1221 ,我们可以将数字“1221”的后半部分从“21”反转为“12”,并将其与前半部分“12”进行比较,因为二者相同,我们得知数字 1221 是回文。
class Solution {
    public boolean isPalindrome(int x) {
        //负数则一定不是回文数,直接返回 false
        if (x < 0) {
            return false;
        }
        int cur = 0;
        int num = x;
        while (num != 0) {
            //得到最后一位数字
            cur = cur * 10 + num % 10;
            //去掉num的个位数
            num /= 10;
        }
        //如果反转后的数字
        return cur == x;
    }
}
标签:情况 style code font 第一个 通过 溢出 时间复杂度 额外
原文地址:https://www.cnblogs.com/xiaozhongfeixiang/p/12019221.html