这次是利用异常处理,巧解算法题(异常处理耗时有点长,通常不会用异常处理做算法题)。
题目要求:
我的代码:
class Solution {
public int reverse(int x) {
try {
String b = "";
if(x<0) {
b = "-";
x = x*(-1);
}
String a = x+"";
if (a.length()==1) {
b=a;
} else {
for (int i = a.length(); i >0; i--) {
b += a.substring(i-1, i);
}
}
return Integer.valueOf(b);
}catch (Exception e) {
return 0;
}
}
}
解题思路:
其他不说,只讲一下,在这个题中异常处理的应用。
题目要求是int类型的值,但是反转后,数据可能超过int,因此需要自己判断是否超过。而判断条件其实有点小麻烦,如果知道int的最大值和最小值,就可以进行判断,但是稍微不注意,就可能因为超过范围报错。
我的想法是:在这里,将字符串转化为整数,但是如果超过int的范围就会报错。我所以我可以把这行可能出错的代码放在try{}中(try{}的花括号包住的范围可大可小,只要可能出错的代码在里边就行),捕获错误,然后catch{}里边处理错误——就是按照题目要求返回0