LeetCode(cai鸟之路)07 整数反转

题目表述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。
示例
输入:x = 123
输出:321

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

先上代码

class Solution {
      public static int reverse(int x) {
        String s = String.valueOf(x);
        if(s.charAt(0) == '-'){
            String newStr = new StringBuffer(s.substring(1,s.length())).reverse().toString();
            if(newStr.charAt(0) =='0'){
                newStr = newStr.substring(1,newStr.length());
                newStr= "-"+newStr;
                long result = Long.parseLong((newStr));
                if(result<-2147483648||result>2147483647) return 0;
                else return (int)result;
            }else {
                newStr= "-"+newStr;
                long result = Long.parseLong((newStr));
                if(result<-2147483648||result>2147483647) return 0;
                else return (int)result;
            }
        }else {
            if(s.equals("0")){
                return Integer.parseInt(s);
            }else {
                String newStr = new StringBuffer(s.substring(0,s.length())).reverse().toString();
                System.out.println(newStr);
                if(newStr.charAt(0) =='0'){
                    newStr = newStr.substring(1,newStr.length());
                    long result = Long.parseLong((newStr));
                    if(result<-2147483648||result>2147483647) return 0;
                    else return (int)result;
                }else {
                    long result = Long.parseLong((newStr));
                    if(result<-2147483648||result>2147483647) return 0;
                    else return (int)result;
                }
            }
        }

    }
}

分析:

将有符号的数字进行反转,首先考虑特殊情况,以负号开头的数字,反转只需对负号之后的数字进行反转,反转操作使用stringbuffer里面的reverse函数直接进行反转操作,但是需要注意的是反转之后开始位置的数字可能变为0,所以需要对0进行去除,只需截取下一位之后的字符即可。
另外当数字只是0的时候或者只有一位的时候直接返回即可。正数的情况同上面负数的反转操作,还是要考虑反转之后首位是否为0。
最后java int 类整数的最大值是 2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647也可以用 Integer.MAX_VALUE 表示它,即 int value = Integer.MAX_VALUE;在接收新的字符转成数值类型时使用long去接收,这样也为了放置超过范围,当超过这个范围直接返回0即可。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值