13.整数反转

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

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

错误

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

总结:我还是太菜了,我的方法特别麻烦,冗余度特别高,leetcode他们的代码精简快捷
在这里插入图片描述
在这里插入图片描述

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));
    }
}

在这里插入图片描述

来源:力扣(LeetCode)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值