Leetcode-2-整数反转-Java篇

Leetcode-2-整数反转-Java篇

题目描述

给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。
要求:

  • 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0
  • 假设环境不允许存储 64 位整数(有符号或无符号)

示例:

//输入:x = 123
//输出:321

//输入:x = -123
//输出:-321

//输入:x = 120
//输出:21

解题方法

方法一

先判断是否是正数,如为正数,直接转为字符串;如为负数,截取数字部分,转为字符串,通过字符串方法反转,拼接上符号.转换为整数.

    public int reverse(int x) {
    
    
        String s =  String.valueOf(x);
        String s2 = "";

        //处理小于0
        if (x<0){
    
    
            s2 = String.valueOf(s.charAt(0));
            s =  s.substring(1);
        }
        //反转数字
        String s1 = new StringBuffer(s).reverse().toString();

        try {
    
    
            return Integer.parseInt(s2+s1);
        }catch (Exception e) {
    
    
            return 0;
        }

    }

方法二

此方法,网上学习,很简单易懂.通过取余数和取除数,反转数字,性能效率好.

public static int reverse(int x){
    
    
        if(x==0){
    
    
            return 0;
        }
        long res = 0;
        while (x != 0){
    
    
            res = res * 10 + x % 10;
            x /= 10;
        }
        if (res>Math.pow(2,31)||res<Math.pow(-2,31)){
    
    
            res=0;
        }
        return (int) res;
    }

方法对比

方法二仅仅通过数字计算得到结果,性能效率比较高,推荐方法二.

猜你喜欢

转载自blog.csdn.net/ABestRookie/article/details/114283335