題目:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
對輸入的整數進行翻轉,保留符號,與之前做過的atoi有點類似。
算法大致思想:
1. 對於輸入的x,先mod10,得到餘數,
2. 然後對上一次計算的結果(結果最開始是0)做進位(乘以10)操作,再加上這個餘數,得到本次計算的結果,
3. 每一次計算後都對x右移一位(x/=10),
4. 循環條件爲x>0
與上一次做的atoi類似,在計算過程中,檢測計算前的res值與計算後的res/10,是否相等,不相等則發生溢出,return 0。
最後實現代碼:
int reverse(int x) {
if (x == INT_MIN) return 0;
int res = 0;
int isNag = 1;
int _x = x;
if (x < 0) {
isNag = -1;
_x = 0 - x;
}
while (_x > 0) {
int oldres = res;
res = (_x % 10) + res * 10;
if (res / 10 != oldres) return 0;
_x /= 10;
}
return res * isNag;
}