https://leetcode.com/problems/reverse-integer/
这题比较麻烦的地方在对溢出的判断,一开始用了long long int来判断有没有溢出,不过太慢了。
后来又改用计算最大int范围,然后除以当前数字,如果小于10则在下一步*=10操作后则会溢出。
然而太慢了,直接和最大值/10的值进行比较,如果大于直接搞掉。不过有个坑,-2147483648的负数还是2147483648,特判了一下,感觉应该是有不用特判的算法。
class Solution {public: int reverse(int x) { int num=0,f=0; int bit=2147483647; if(x<0) { x=-x,f=1; if(x==-x) return 0; } while(x) { if(num>214748364) return 0; num*=10; num+=x%10; x/=10; } if(f) num=-num; return num; }};