整数反转

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

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

 

初始版本,最垃圾

public static int reverse(int x) {
        int i=0;
        int max = 2147483647;
        int min = -2147483648;
        long z=0;
        List<Integer> lists =new ArrayList<>();
        if(x==0){return 0;}
        while(x%10==0){//去除后面的0
            x=x/10;
        }
        while (x/10!=0){
          int ch = x%10;
          lists.add(ch);

          x=x/10;
          i++;
        }
        lists.add(x);
        for (int j=0;j<=i;j++)
        {
            z=z+lists.get(j)*(long)Math.pow(10,i-j);
            if(z>max||z<min){return 0; }
        }
            return (int)z;

    }

 

更新版本

public static int reverse(int x) {
        int max = 2147483647;
        int min = -2147483648;
        long s=0;
        while (x!=0){
            s = s*10+x%10;//将原来的数字乘以10再加一个个位数
            x =x/10;
        }
        if(s>min&&s<max){

            return (int)s;
        }
        else {
            return  0;
        }

    }

  

posted @ 2021-03-12 18:23  chenyuan#  阅读(62)  评论(0)    收藏  举报