整数反转(不用字符串)

2019-10-30  本文已影响0人  今天也要努力呀y

中间的判断条件为是否溢出
输入: -123
输出: -321

class Solution {
    public int reverse(int x) {
        int newnumber = 0;
        while (x!=0) {
            int pop = x % 10;
            x/=10;
            if (newnumber>Integer.MAX_VALUE/10||(newnumber==Integer.MAX_VALUE/10&&pop>7))return 0;
            if (newnumber<Integer.MIN_VALUE/10||(newnumber==Integer.MIN_VALUE/10&&pop<-8))return 0;
            newnumber = newnumber*10+pop;
        }
        return newnumber;
    }
}

类似的题还有:回文数的判断(如果不让你用字符串)

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

class Solution {
    public boolean isPalindrome(int x) {
        if (x<0) return false;
        int temp = x;
        int rev = 0;
        while (x!=0){
         int pop = x%10;
         x/=10;
         if (rev>Integer.MAX_VALUE/10||(rev==Integer.MIN_VALUE/10&&pop>7)) return false;
         if (rev<Integer.MIN_VALUE/10||(rev==Integer.MIN_VALUE/10&&pop<-8)) return false;
         rev = rev*10 + pop;
        }
        if (rev==temp){
            return true;
        }
        return false;
    }
}
上一篇下一篇

猜你喜欢

热点阅读