Leetcode 7. Reverse Integer

Reverse Integer

Reverse Integer :

本題給定一個 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);
    }
};