首页 > 其他 > 详细

力扣题解 7th 整数反转

时间:2020-07-05 12:00:43      阅读:33      评论:0      收藏:0      [点我收藏+]

7th 整数反转

  • 模拟法

    利用%运算和/运算,模拟两数反转的过程。难点在于溢出条件的判断(溢出发生于ans = ans * 10 + a阶段),在ans * 10 + a运算完成之前:

    • 对于正数:
      • 当ans大于max_value/10,说明当ans*10后一定溢出。
      • 当ans小于max_value/10,则它+a后也不会溢出。
      • 当ans等于max_value/10,在a>7时他会溢出(因为max_value%10==7)。
    • 对于负数也是一样的道理。
    class Solution {
        public int reverse(int x) {
            int ans = 0;
            while (x != 0) {
                int a = x % 10;
                if (ans > Integer.MAX_VALUE / 10 || (ans == Integer.MAX_VALUE / 10 && a > 7)) return 0;
                if (ans < Integer.MIN_VALUE / 10 || (ans == Integer.MIN_VALUE / 10 && a < -8)) return 0;
                ans = ans * 10 + a;
                x /= 10;
            }
            return ans;
        }
    }
    

力扣题解 7th 整数反转

原文:https://www.cnblogs.com/fromneptune/p/13238099.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!