letcode-7-reverse interger
python:
python 的int不会越界,自带大数运算。所以必须判断反转后的值是否为32位。
import math
def reverse(self, x):
#如果溢出int,返回0
p=[]
if (x>-(math.pow(2,31))) & (x<2**31-1):
s=str(x)[::-1]
if(s[-1]=='-'):
s=s[-1]+s[0:-1]
p=int(s)
if (p>-(math.pow(2,31))) & (p<2**31-1):
return p
else:
return 0
else:
return 0
值得之一的是,必须判断,翻转后的值是否会越界(不在[-2**31,2**31-1])。
str也是一种str的list,可以切片,倒序,连接(+)
math.pow()
java:
public int reverse(int x) {
int val=0;
if((x>-Math.pow(2,31))&&(x<(Math.pow(2,31)-1))) {
String str=String.valueOf(Math.abs(x));
StringBuffer s=new StringBuffer(str);
int flag=x<0?-1:1;
s.reverse();
try {
val=Integer.parseInt(s.toString())*flag;
}catch(Exception e) {
val=0;
}
}
return val;
}
Math.abs(x)
int->string: String.valueOf(val);
string->stringbuffer: StringBuffer s=new StringBuffer(str);
stringbuffer反转:s.reverse();
条件判断: int flag=x<0?-1:1;
stringbuffer->int:stringbuffer->string->int。(Integer.parseInf的参数是string)
str=int_obj.toString();
Integer.parseInf(str);
捕捉异常:
try {
val=Integer.parseInt(s.toString())*flag; /**/
}catch(Exception e){}