Leetcode rever-Integer
程序员文章站
2022-04-02 20:22:55
题目描述将给出的整数x翻转。例1:x=123,返回321例2:x=-123,返回-321你有思考过下面的这些问题么?如果整数的最后一位是0,那么输出应该是什么?比如10,100你注意到翻转后的整数可能溢出吗?假设输入是32位整数,则将翻转10000000003就会溢出,思路:依次取个位数,放入res每次迭代 res*10+lastNum如何判断溢出 int new_res=res*10+last判断 (new_res-last)/10与 res是否相等......
题目描述
将给出的整数x翻转。
例1:x=123,返回321
例2:x=-123,返回-321
你有思考过下面的这些问题么?
如果整数的最后一位是0,那么输出应该是什么?比如10,100
你注意到翻转后的整数可能溢出吗?假设输入是32位整数,则将翻转10000000003就会溢出,
思路:
依次取个位数,放入res
每次迭代 res*10+lastNum
如何判断溢出 int new_res=res*10+last
判断 (new_res-last)/10与 res是否相等 如果不等 那么产生溢出
int reverse(int x) {
// write code here
bool flag=false;
if(x<0)
{
x=abs(x);
flag=true;
}
int res=0;
while(x>0)
{
int last=x%10;//取最后一位数字
int new_res=res*10+last;//原先的数字*10+新来数字
if((new_res-last)/10!=res) //产生溢出
return 0;
res=new_res;
x=x/10; //
}
if(flag)
return -res;
return res;
}
本文地址:https://blog.csdn.net/qq_33369979/article/details/107621730