zoukankan      html  css  js  c++  java
  • [LeetCode]7.整数反转

    题目描述

    在这里插入图片描述

    解法

    • 弹出和推入数字,溢出前进行检查
      可以使用 x % 10x尾部数字"弹出",同时x /= 10,以 x != 0作为循环条件。用一个整形变量rev按顺序接收弹出的数字,即rev = rev *10 + pop,这里pop = x % 10
      需要注意溢出的情况,提前判断:
      32位有符号整形的取值范围为-2147483648~2147483647
      rev为正数时,如果rev > INTMAX/10rev = rev *10 + pop肯定溢出了,如果rev = INTMAX/10,这时如果pop > 77INTMAX的个位数字)则溢出。
      rev为负数时,如果rev < INTMIN/10rev = rev *10 + pop肯定溢出了,如果rev = INTMIN/10,这时如果pop < -8-8INTMIN的个位数字)则溢出。
    class Solution {
        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;//rev有可能溢出,所以需要提前判断
            }
            return rev;
        }
    }
    

    参考资料
    https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode/

  • 相关阅读:
    Java职业生涯规划
    Java类加载器总结
    Java字节流与字符流的区别
    Java堆和栈的区别
    详解Java类的生命周期
    Java编程常见问题汇总
    Java总结输入流输出流
    Java NIO:浅析I/O模型
    perl 处理文件路径的一些模块
    Delphi第三方控件安装卸载指南
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860107.html
Copyright © 2011-2022 走看看