题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
代码一:
class Solution {
public int reverse(int x) {
String s=Integer.toString(x);
int length=s.length();
String result="";
String sig="";
int flag=0;
if(s.charAt(0)=='-'){
sig="-";
flag=1;
}
if(s.charAt(length-1)!=0){
result+=s.charAt(length-1);
}
for(int i=length-2;i>=flag;i--){
result+=s.charAt(i);
}
double r=Double.parseDouble(sig+result);
if(r>Integer.MAX_VALUE || r<Integer.MIN_VALUE){
return 0;
}
else{
return (int)r;
}
}
}
自己写的,今天 也是很菜的一天呢~
代码二:
class Solution {
public int reverse(int x) {
int rev=0;
while(x!=0){
int pop=x%10;
x/=10;
if(rev>Integer.MAX_VALUE/10||(rev==Integer.MAX_VALUE/10 && pop>7))
return 0;
if(rev<Integer.MIN_VALUE/10||(rev==Integer.MIN_VALUE/10 && pop<-8))
return 0;
rev=rev*10+pop;
}
return rev;
}
}
官方答案。使用了数学方法比使用字符串节省了很多空间,提高了运行速度。