问题描述:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
这应该算是相当简单的问题了,用%和/来不断获取整数的最低位,用atoi的思想获得转换后的数。这题考察的应该是我们的细心程度。一个合格的Reverse Integer算法应该考虑到溢出的情况。
int reverse(int x) { int y=0; int max=~(unsigned int)0/2; int min=-max-1; while(x!=0){ if(x<10&&x>-10){ if(y>max/10||y==max/10&&x>max%10) return 0; if(y<min/10||y==min/10&&x<min%10) return 0; } y=y*10+x%10; x/=10; } return y; }
这里我用了~(unsigned int)0/2来计算int的最大值,这样就保证在不同机器上都能正确地处理溢出了。
其他的似乎也没有什么好说的了。
时间: 2024-11-04 12:53:35