LeetCode 7 Reverse Integer
新颖之处:
- 如何判断一个数在反转时是否溢出呢?
假设int的范围上限为1234,在反转后应该为4321,这时候一定会爆掉int,应该返回0。y记录反转结果,prey记录上次结果,如果 y/10 != prey 就代表溢出,因为y溢出会致使y计算错误,即 y/10 无法与 prey 相匹配。
2. 第一次遇到uint32_t这种类型,也是涨知识了!原以为C是很简单的语言,太肤浅了,肤浅......
Code:
#include "stdio.h"
#include "stdint.h"
int reverse(int x){
int y = 0, z = (x<0), prey = 0;
uint32_t xx ; // 第一次遇到这种类型
xx = (z?-x:x);
while(xx){
y = y*10 + xx%10;
// 判断是否溢出
if( y != prey*10 ) return 0;
prey = y;
xx /= 10;
}
return z?-y:y;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
printf("%d
",reverse(n));
}
return 0;
}