思路:
1、考虑正负号
2、使用ArrayList,%,/实现逆序
3、如何检测是否溢出(还要考虑逆序后可能溢出的情况)。检测溢出:如果加数为正,加的结果比原来小,或者加数为负,加的结果比原来大,那么就是溢出了。
犯的错误:
1、没有正确考虑溢出
2、逻辑符号用错
代码:
class Solution {
public int reverse(int x) {
if(x==0) return 0;
if(x>Math.pow(2, 31)||x<-Math.pow(2, 32))return 0;
List<Integer> ls=new ArrayList<Integer>();
int k=-1;
while(x!=0) {
k=x%10;
x=x/10;
ls.add(k);
}
int result=0;
for(int i=ls.size();i>0;i--) {
int a=(int) (ls.get(ls.size()-i)*Math.pow(10, (i-1)));
int sum=result+a;
if(a>0&&sum<result)return 0;
if(a<0&&sum>result)return 0;
result=sum;
}
return result;
}
}