20201218 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321
 示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
    public int reverse(int x) {
 
}

 

思路(错误):看到反转脑袋第一反应是通过string的reverse来处理 

    public static int reverse(int x) {
        boolean isless=false;
        if (x<0) isless=true;
        StringBuilder s = new StringBuilder(String.valueOf(Math.abs(x)));
        s.reverse();
        s=isless==true?s.insert(0,"-"):s.append("");
        System.out.println(s.toString());
        return Integer.parseInt( s.toString());
    }

int值小时正常 但int值很大溢出报错 int数据范围为-2147483648~2147483647 

 

 

 

下面是官方解答

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

 

posted @ 2020-12-18 16:18  小白小白小白小白  阅读(80)  评论(0编辑  收藏  举报