zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    ubuntu系统安装初始化脚本
    21_多线程
    20_IO
    19_异常
    18_集合
    17_内部类和常用类
    16_接口
    15_abstract,static,final
    14_面向对象
    13_数组
  • 原文地址:https://www.cnblogs.com/hbhb/p/14155543.html
Copyright © 2011-2022 走看看