Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
越简单的题目,才发现技巧越多啊.题目很容易理解,保持原代数符号不变将位置颠倒.
一开始写的代码:
int reverse(int x) {
int y=0 ;
int tem;
while(1)
{
if( (tem=x%10 )!=0 )
{ y = y*10 +tem;
x = x/10;
}else
break;
}
return(y);
}
写完之后才发现一堆错误啊,简直泪流满面,自己依旧是个渣… 首先判定条件的问题 (x%10)这个地方 对于含有0的数字就不行了,比如10.然后是范围的问题,int的范围是2147483647 到-2147483648,给你数字X不可能超过但是反转后就不一定了需要考虑(在leetcode要求中如果超过就返回0).参考了一下别人的代码才发现小技巧真的很重要,别人的代码看这就是舒服.
int reverse(int x) {
long y=0;
while(x)
{
y = y*10 +x%10;
x = x/10;
}
if(y >2147483647 || y <-2147483648)
return(0);
return(y);
}
这代码就清爽多了.判定条件直接就X .简单实用,受益匪浅啊.