題目描述:
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123 輸出: 321
示例 2:
輸入: -123 輸出: -321
示例 3:
輸入: 120 輸出: 21
注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。
解題思路:當數字不爲結束符的時候循環。
首先取出一個數的餘數,然後將餘數作爲新數據的最高位,然後將原來的去掉餘數之後變成一個新的數。
注意數據的範圍和結果的類型轉換。
class Solution {
public:
int reverse(int x) {
long res = 0;
while(x != 0){
res =res *10 + x%10;
x/=10;
if(res > 2147483647 || res < -2147483648) return 0;
}
return (int)res;
}
};
總結:數字翻轉類型,數字中的各個位置上數字的通用方法。即先對一個數字按10取餘數,然後對該數據按10取整數。
樣例代碼: res =res *10 + x%10;
x/=10;