提示
LintCode中的相关算法题实现代码,可以在我的GitHub中下载。
题目需求
将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。
样例
给定 x = 123
,返回 321
给定 x = -123
,返回 -321
解题思路
使用队列,现将数字转化为一个个数,然后在重新拼凑,要注意数字溢出。
实现代码
class Solution {
public:
/**
* @param n: the integer to be reversed
* @return: the reversed integer
*/
int reverseInteger(int n) {
// write your code here
queue<int> s;
int count=0;
if(n<0) count=1;
n=abs(n);
while(n)
{
int tmp=n%10;
s.push(tmp);
n=n/10;
}
long sum=0;
while(s.size())
{
if(count==1)
{
sum=sum*10-s.front();
}
else sum=sum*10+s.front();
if(sum>pow(2,31)-1||sum<-pow(2,31)) return 0;
s.pop();
}
return sum;
}
};