本題給定一個 32-bit 的整數,將整數中的數字進行反轉。
Python
方法一 :
如果是正數,利用 [::-1] 來反轉陣列,如果是負數,先轉正之後後再反轉陣列,最後再轉回負數。
class Solution:
def reverse(self, x):
if x < 0: #負數反轉
y = -1 * int(str(-x)[::-1])
else: #正數反轉
y = int(str(x)[::-1])
if y > 2**31 or y < -2**31: #判斷溢出值
y = 0
return y
方法二 :
跟方法一雷同,指示是利用str來判別正負做處理。
class Solution:
def reverse(self, x: int) -> int:
s = str(x)
s = s[::-1]
if s[-1] == '-': # str負號
s = '-' + s[:-1]
ans = int(s)
if ans > 2147483647 or ans < -2147483648:
return 0
return ans
方法三 :
利用10進位的轉換來完成翻轉
class Solution:
def reverse(self, x: int) -> int:
if x>0:
num=1
else:
num=-1
new_x,x=0,abs(x)
while x:
new_x=new_x*10+x%10 #123->3
x/=10 #123->12
new_x=num*new_x
return new_x if new_x < 2**31 and new_x >= -2**31 else 0
C++
假設x=123,迴圈第一次 ans : 3 , x :12
迴圈第二次 ans : 32 , x :1
迴圈第三次ans : 321 , x :0 即得到解答
class Solution {
public:
int reverse(int x) {
long ans=0;
while(x){
ans=ans*10+x%10;
x=x/10;
}
if(ans>INT_MAX || ans<INT_MIN) return 0;
return int(ans);
}
};