13.整数反转

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321

思路:这个题目我的思想是先将x%10取最后一位数,然后将/10得的数作为新的整数x,然后继续%10直到x<10则退出循环,将每次新得得整数x添加进可变长数组arrayList中,然后循环遍历将输出反转整数。

错误

  • 第一次错误是如图,没有考虑到10得情况,
  • 第二次错误如第二张图,是因为代码有误系统识别不出来,最后发现是do -while之间有了空格,
  • 第三次错误是没有考虑到整数溢出则返回0的情况(这个没有改过来,即使加了if语句可是输入1534236469结果还是错的)

总结:我还是太菜了,我的方法特别麻烦,冗余度特别高,leetcode他们的代码精简快捷
13.整数反转_第1张图片
13.整数反转_第2张图片

public class Demo2 {
    //输入一个整数,for循环,第先%10取出最后一个数,然后如果/10>10则继续除以10
    // 直到它小于10,将取出的数存放在数组中,然后从第一个数不是0的数开始打印如果
    public int reserve(int x) {
        int temp=x;
        if(x<=-10) {
            x = -x;
        }else if(x>-10&&x<10){
            return x;
        }
        ArrayList<Integer> array = new ArrayList<>();//创建一个可变长数组存放输出的数
        int y=0;
        int j=0;
        do {
            int a = x % 10;
            int b = x / 10;
            array.add(a);
            x = b;
        } while (x >= 10);
        array.add(x);
        for(int i=0;i<array.size();i++) {
            int a = array.get(i);
            for(int k=0;k<array.size()-i-1;k++){
                a=a*10;

            }
            y+=a;
        }
        if(temp<0){
            y=-y;
        }
        System.out.println(array);

        return y;
    }
    public static  void main(String[] args){
        Demo2 demo = new Demo2();
        System.out.println(demo.reserve(153423646));
    }
}

13.整数反转_第3张图片

来源:力扣(LeetCode)

你可能感兴趣的:(Java练习题)