c语言解题:
int reverse(int x) {
int a=0,b =0;
int l = -2147483648,r = 2147483647;
while(x != 0)
{
a = x % 10;
x = x / 10;
if((b > r /10) || (b == r / 10 && a > 7))
return 0;
if((b < l /10) || (b == l / 10 && a < -8))
return 0;
b = b * 10 + a;
}
return b;
}
这个就很简单了,这里就是利用了取余和除法运算, = 2147483648(记住就行)
python再来一版,主要就是为了练习下py的语法。。。
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
b,res = '',''
if x < 0:
b = '-'
x = str(abs(x))
else:
x = str(x)
for i in reversed(x):
res +=i
if int(res) > 2**31:
return 0
return int(res) if b=='' else int(b + res)
python这里主要使用了一个reversed函数,首先将转成字符串的格式,然后用字符串函数进行逆转,最后返回的时候在转成int的形式。
这个代码的思路比较简单,首先,用flag 确定 x 的符号,然后用str 函数将 x 转成 字符串, 然后直接采用 [::-1] 对字符串进行逆序,然后在转成int型,最后判断是否溢出,然后对数据进行返回。
class Solution:
def reverse(self, x: int) -> int:
flag = 1
if x < 0:
flag = -1
x = -x
r = int(str(x)[::-1])
if r > 2147483647 or r < -2147483648:
return 0
else:
return flag*r