leetcode 7. 整数反转
O(lgn)
只用int,会麻烦一点,注意在最后一次累成的时候判断是否会溢出就可以了。
class Solution {
public:
int reverse(int x) {
if(x == 0)
return 0;
queue<int> q;
bool note = x < 0; //记录是否为负数
while(x != 0)
q.push(abs(x % 10)),x /= 10;
while(q.size() > 1)
x = x * 10 + q.front(),q.pop();
x = note ? -x : x;
if(x > 214748364 || x < -214748364 ||
(x == 214748364 && q.front() > 7) ||
x == -214748364 && q.front() > 8)//int类型的数据范围是[-2147483648,2147483648]
return 0;
return note ? x * 10 - q.front() : x * 10 + q.front();
}
};