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;
    }

方法对比

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值