整数反转,算法小白自闭的一天

算法小白,整数反转,力扣简单题,强行暴力,100行代码,直接裂开!!!

题目:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321
示例 2:

输入:x = -123
输出:-321
示例 3:

输入:x = 120
输出:21
示例 4:

输入:x = 0
输出:0

public class Zhengshufanzhuan {
     static  long xx = 0;
    public static int reverse(int x) {
        if (x>=Integer.MAX_VALUE||x<=Integer.MIN_VALUE){
            return 0;
        }
        if (x == 0) {
            return 0;
        }else if (x>0&&x<10){
            return x;
        }else if (x>-9&&x<0){
            return x;
        }
        if (x<0){
            x=x-x-x;
            if (x%10==0){
                while (x%10==0){
                    x=x/10;
                    if (x%10!=0){
                        x=x-x-x;
                        break;
                    }
                }
            }else {
                x=x-x-x;
            }
        }

        String str=Integer.toString(x);
        char[] c=str.toCharArray();
        int len=c.length-1;
        if (c[0]=='-'){//-12   4
            if (c.length%2==0){
                len=len+1;
                for (int i = 1; i < (c.length+1)/2; i++) {
                    char a=c[i];
                    c[i]=c[len-i];
                    c[len-i]=a;
                }
                String s = new String(c);
                xx=Long.parseLong(s);
                if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
                    return 0;
                }
                return Integer.parseInt(s);
            }
            len=len+1;
            for (int i = 1; i <= (c.length-1)/2; i++) {
                char a=c[i];
                c[i]=c[len-i];
                c[len-i]=a;
            }
            String s1 = new String(c);
            xx=Long.parseLong(s1);
            if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
                return 0;
            }
            return Integer.parseInt(s1);
        }
        if (c.length%2==0){
            for (int j = 0; j < (c.length+1)/2; j++) {
                char a=c[j];
                c[j]=c[len-j];
                c[len-j]=a;
            }
            String s2 = new String(c);
            xx=Long.parseLong(s2);
            if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
                return 0;
            }
            return Integer.parseInt(s2);
        }
        for (int j = 0; j < (c.length)/2; j++) {
            char a=c[j];
            c[j]=c[len-j];
            c[len-j]=a;
        }
        String s3 = new String(c);
        xx=Long.parseLong(s3);
        if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
            return 0;
        }
        return Integer.parseInt(s3);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值