这道题看上去比较简单,但是需要注意的细节和情况的处理还是很多的。
(1) 注意负数
(2)注意10,100这类数字的反转
(3) 最容易忽视的一点,整型的溢出。(2333333339反转超int)
注意我们计算的过程中不需要另外存数字,直接计算就好。处理溢出我们先用long long储存,超int后直接返回0
其实我们发现,(1)和(2)都不需要特殊处理,在运算的过程中会自行处理。
class Solution { public: int reverse(int x) { int maxx=0x7fffffff,minn=0x80000000;//int最大值和最小值 long long ans=0; while(x) { ans=ans*10+x%10; if(ans>maxx||ans<minn)//解决溢出(long long) { ans=0; break; } x/=10; } return ans; } };
LeetCode Reverse Integer (处理溢出)
原文:http://blog.csdn.net/nk_test/article/details/45998543