1. 程式人生 > >【leetcode】7. 顛倒整數

【leetcode】7. 顛倒整數

題目描述:

給定一個範圍為 32 位 int 的整數,將其顛倒。

例 1:

輸入: 123

輸出: 321

例 2:

輸入: -123

輸出: -321

例 3:

輸入: 120

輸出: 21

注意:

假設我們的環境只能處理 32 位 int 範圍內的整數。根據這個假設,如果顛倒後的結果超過這個範圍,則返回 0。

解題思路:

符號單獨處理(統一為非負整數進行計算,最後再還原正負號);

除10取餘,用一個數組儲存餘數(如數字321,儲存為陣列arr=[1,2,3]);

將餘數陣列處理還原為倒序後的數字(3+2*10+1*100)。

程式碼實現:

class Solution {

public:

   int reverse(int x) {

        vector <int> arr;

        int flag=0,y=0;

       // 將x統一化為非負數,用flag作為標記,以便最後還原

        if(x>0)

            flag=1;

        else x=-x;

        while(x!=0){

            // 對x進行除10取餘,將數字倒序儲存到陣列中

            arr.push_back(x%10
); x=x/10; } //將陣列還原成一個整數 for(int i=arr.size()-1,j=0;i>=0;i--,j++){ y+=arr[i]*pow(10,j); if(y<0)return 0; } //還原正負號 if(flag==0){ y=-y; } return y; } };