题目:给出一个 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)