题目描述:反转整数输出,注意的是输入被假定为一个32位有符号整数。当反整数溢出时,函数应返回0。
今年的华为的实习生招聘笔试的第一个题与这个有点类似,不过华为的是输入两个整数,反转,然后输出两个整数反转后两个数的和。
测试代码:
#include <iostream>
using namespace std;
class Solution {
public:
int reverse(int x)
{
int reverseX=0;
int temp;
int a;
int biaozhi=1;
if (x<0)//如果x小于0,将它变成正的
{
biaozhi=-1;
x=abs(x);
}
while(x!=0)//当x不等于0的时候
{
if (reverseX>(INT_MAX-x%10)/10)//判断是否溢出
{
return 0;
}
else
{
temp=x%10;
reverseX=reverseX*10+temp;
x=x/10;
}
}
return reverseX*biaozhi;
}
};
int main()
{
Solution s;
int i=s.reverse(1534236469);
cout<<i<<endl;
return 0;
}
如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com,更多博文干货等着您。