官方解法
⟮
O
(
∣
x
∣
)
、
O
(
1
)
⟯
\lgroup O(|x|)、O(1)\rgroup
⟮O(∣x∣)、O(1)⟯
classSolution:defreverse(self, x:int)->int:
INT_MIN, INT_MAX =-2**31,2**31-1
rev =0while x !=0:if rev < INT_MIN //10+1or rev > INT_MAX //10:return0
digit = x %10if x <0and digit >0:
digit -=10# Python3 的取模运算在 x 为负数时也会返回 [0, 9) 以内的结果,因此这里需要进行特殊判断
x =(x - digit)//10
rev = rev *10+ digit
return rev
写法2
classSolution:defreverse(self, x:int)->int:
flag =1if x <0:
flag =-1
x =- x
res =int(str(x)[::-1])#return 0 if (res > 2**31 - 1 or -res < -2**31) else res * flag return res * flag if-2**31<= res <=2**31-1else0
classSolution:defreverse(self, x:int)->int:
flag =1if x <0:
flag =-1
x =- x
s =str(x)
res =''for i inrange(len(s)-1,-1,-1):
res += s[i]
res =int(''.join(res))return0if(res >2**31-1or-res <-2**31)else res * flag
写法3
classSolution:defreverse(self, x:int)->int:
flag =1if x <0:
flag =-1
x =- x
res =0while x >0:
x, tmp =divmod(x,10)
res = res *10+ tmp
res *= flag
if-2**31<= res <=2**31-1:return res
else:return0
C++
官方解法
⟮
O
(
∣
x
∣
)
、
O
(
1
)
⟯
\lgroup O(|x|)、O(1)\rgroup
⟮O(∣x∣)、O(1)⟯
classSolution{public:intreverse(int x){int res =0;//int INT_MAX = 2**31-1; INT_MIN = -2**31; // C++ 自带while(x !=0){if(res < INT_MIN /10|| res > INT_MAX /10){// 注意写法return0;}int digit = x %10;
x /=10;
res = res *10+ digit;}return res;}};