#LeetCode:7. Reverse Integer

利用除法和餘數的方式一位一位將數字移到另外一個變數中即可。判斷 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 Comment

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

%d 位部落客按了讚: