題目來(lái)源
將一個(gè)整型數(shù)字反轉(zhuǎn)苍日,假如反轉(zhuǎn)后溢出則返回0。
我想著搞個(gè)long long
類型窗声,然后一位一位的算相恃,然后再判斷,寫的十分弱雞笨觅,十分不雅拦耐,令人看著十分難受,代碼如下:
class Solution {
public:
int reverse(int x) {
long long res = 0;
if (x == INT_MIN)
return 0;
int label = 1;
if (x < 0) {
x = -x;
label = -1;
}
while (x) {
res = res * 10 + x % 10;
x = x / 10;
}
if (label == 1 && res > INT_MAX)
return 0;
if (label == -1 && res > static_cast<long long>(INT_MAX) + 1)
return 0;
return label * static_cast<int>(res);
}
};
肯定有更加優(yōu)雅的寫法见剩,以及O(1)的做法杀糯。
然后我發(fā)現(xiàn)自己想多了,沒(méi)有O(1)的苍苞,不過(guò)更優(yōu)雅的必須有固翰。
代碼如下:
class Solution {
public:
int reverse(int x) {
int res = 0;
while (x) {
int tail = x % 10;
int newRes = res * 10 + tail;
if ((newRes - tail) / 10 != res)
return 0;
res = newRes;
x /= 10;
}
return res;
}
};
直接通過(guò)除10后是不是等于原來(lái)的數(shù)來(lái)判斷是否溢出了,很漂亮很簡(jiǎn)潔羹呵。