整数翻转

整数翻转

第一次代码编辑

使用整数二叉反转

   public int test1(int x){
         String c= x<0?"-":"";
         x= x<0?Math.abs(x):x;
         int start=0;
         int end=0;
         //判断如果超出越界将返回为0
         if( x>=Integer.MAX_VALUE || x<= Integer.MIN_VALUE ){
             return 0;
         }
         String s = String.valueOf(x);
         char[] chars = s.toCharArray();
         if(chars.length<2){
             return x;
         }
         if( (end=chars.length)%2==0){
             while(start !=end){
                 char aChar = chars[start];
                 chars[start]= chars[end-1];
                 chars[end-1]=aChar;
                 start++;
                 end--;
             }
         }else{
             while(start <(chars.length/2+1 ) ){
                 char aChar = chars[start];
                 chars[start]= chars[end-1];
                 chars[end-1]=aChar;
                 start++;
                 end--;
             }
         }
         long longer = Long.valueOf(c+String.valueOf(chars));
         if(longer>=Integer.MAX_VALUE || longer<= Integer.MIN_VALUE){
             return 0;
         }
         Integer abc=(int)longer;
         return abc;
     }

第二次代码编辑

根据思考使用数学方法取模,取余方法


    public int test2(int x){
        // 判断最大值返回为0
        if(Integer.MAX_VALUE == x || Integer.MIN_VALUE==x ){
            return 0;
        }
        // 判断是否为负数
        int sign=x<0?-1:1;
        // 将负整数转换为证书
        x= x<0 ? -x:x;
        String hullstr="";
        int result;
        while ( (result=x%10) != x    ){
            hullstr+=x%10;
            x/=10;
        }
        // 余位拼接
        if( (result=x%10) == x ){
            hullstr+=result;
        }
        long hulllong=Long.parseLong(hullstr);
        hulllong=hulllong*sign;
        if(Integer.MAX_VALUE<hulllong ||Integer.MIN_VALUE>hulllong )
            return 0;
        result= (int) hulllong;
        return result;
    }


上传LeetCode发现效果不理想,思考原因是否用string 原因导致运行时间过长,后来将String 转换int

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三次代码提交

** string 转 int**

public int reverse(int x) {
         // 判断最大值返回为0
        if(Integer.MAX_VALUE == x || Integer.MIN_VALUE==x ){
            return 0;
        }
         // 判断是否为负数
         int sign=x<0?-1:1;
         // 将负整数转换为证书
         x= x<0 ? -x:x;
         int result = 0;
         int last;
         while ( (last=x%10) != x    ){
             result = result*10+ last;
             x/=10;
         }
        long hulllong = 0;
         // 余位拼接
         if( (last=x%10) == last ){
             hulllong = result;
             hulllong =hulllong*10+ last;
         }
        hulllong=hulllong*sign;
        if(Integer.MAX_VALUE<hulllong || Integer.MIN_VALUE>hulllong )
            return 0;

         result= (int) hulllong;
         return result;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值