LeetCode 7 Reverse Integer

LeetCode 7 Reverse Integer

新颖之处:

  1. 如何判断一个数在反转时是否溢出呢?

假设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;
    }
如要转载请注明转载出处:http://www.cnblogs.com/WArobot
原文地址:https://www.cnblogs.com/WArobot/p/6691514.html