利用除法和餘數的方式一位一位將數字移到另外一個變數中即可。判斷 Overflow 的部分要在會 Overflow 的前一刻確定一旦將這位數字移進去會不會 Overflow 即可。
C++(12ms)
/*******************************************************/ /* LeetCode 7. Reverse Integer */ /* Author: Maplewing [at] knightzone.studio */ /* Version: 2018/09/27 */ /*******************************************************/ #include <climits> class Solution { public: int reverse(int x) { int reverseX = 0; int maxIntDiv10 = INT_MAX / 10; int minIntDiv10 = INT_MIN / 10; int maxLowestDigit = INT_MAX % 10; int minLowestDigit = INT_MIN % 10; while(x != 0){ int digit = x % 10; if(reverseX > maxIntDiv10 || (reverseX == maxIntDiv10 && digit > maxLowestDigit)) return 0; if(reverseX < minIntDiv10|| (reverseX == minIntDiv10 && digit < minLowestDigit)) return 0; reverseX = reverseX * 10 + digit; x /= 10; } return reverseX; } };
1 回應