给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1:
输入: 123
输出: 321
示例2:
输入: -123
输出: -321
示例3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
根据题意,只有三个关注点:1、整数有符号,可能是正数可能是负数;2、输入的结尾是n个0时,反转后以0开头的数要去掉0;3、反转后的数可能比int型能存的数大,按照注意里说的就得返回0。
class Solution {
public int reverse(int x) {
String s = String.valueOf(x);
boolean isNeg = false;//是否是负数
//先将数字的符号去掉
if(s.charAt(0)=='-'){
isNeg = true;
s = s.substring(1,s.length());
}
//处理掉末尾的0
int i=s.length()-1;
while(s.charAt(i)==0){
i = i-1;
s = s.substring(0,i);
}
//反转该数
String s1 = "";
while(i>=0){
s1+=s.charAt(i);
i--;
}
//处理溢出
try{
x = Integer.parseInt(s1);
}catch (Exception e){
return 0;
}
if(isNeg){
return 0-x;
}
return x;
}
}
对于这种写法的提交结果我还是比较满意的