【leetcode】7. 顛倒整數
阿新 • • 發佈:2019-01-04
題目描述:
給定一個範圍為 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;
}
};