一般来说整数的处理问题要注意的有两点,一点是符号,另一点是整数越界问题。
1. Java
String/StringBuilder Manipulation + border check
public class Solution {
public int reverse(int x) {
StringBuilder sb = new StringBuilder(String.valueOf(x));
boolean sign = x<0?true:false;
if(x<0) sb.delete(0,1);
long res = Long.valueOf(sb.reverse().toString());
res = sign?res*(-1): res;
return (res>Integer.MAX_VALUE || res<Integer.MIN_VALUE)?0:(int) res;
}
}
public class Solution {
public int reverse(int x) {
long sum=0;
for(; x!=0; x = x/10){
sum = sum*10 + x%10;
if(sum>Integer.MAX_VALUE || sum<Integer.MIN_VALUE)
return 0;
}
return (int) sum;
}
}
because -3%10=-3, we don't need to think about the sign.
2. Python
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
flag=1
if x<0:
x=x*(-1)
flag=-1
current=0
while x>0:
digit = x%10
current = current*10+digit
x=x/10
if current > 2147483647: return 0
return current*flag