zoukankan      html  css  js  c++  java
  • 整数反转

    需求

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

      注意:

      假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [Integer.MIN_VALUE,  Integer.MAX_VALUE]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    示例

      输入: 123
    输出: 321
      输入: -123
      输出: -321
      输入: 120
      输出: 21

    解题

      这题我也只想到了常规的思路,每次取模,将模拼接得到结果,代码如下:

        public static int reverse(int x) {
            int result = 0;
            while (x != 0) {
                int mod = x % 10;
                x = x / 10;
    
                result = result * 10 + mod;
            }
            return result;
        }

      但是,没有考虑到整数溢出的问题(即翻转后的整数是否在范围:Integer.MIN_VALUE<int<Integer.MAX_VALUE内),所以第二次改进:

        // 思路:将返回的结果转正long进行比较。
        public static int reverse2(int x){
            Long result = new Long(0);
            while (x != 0) {
                long mod = x % 10;
                x = x / 10;
                result = result * 10 + mod;
            }
            if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
                return 0;
            }
            return result.intValue();
        }

      想不到效果还挺好,击败百分百用户。。。。。

     

  • 相关阅读:
    java字符串实现正序和倒序输出
    暑假前挑战赛1—— A,B题解
    深搜
    poj 1200 Crazy Search
    poj 1840 Eqs (hash)
    Choose the best route
    一个人的旅行
    畅通工程续
    最短路基础算法
    完全背包问题
  • 原文地址:https://www.cnblogs.com/maguanyue/p/12738552.html
Copyright © 2011-2022 走看看