Skip to content

Latest commit

 

History

History
41 lines (38 loc) · 789 Bytes

File metadata and controls

41 lines (38 loc) · 789 Bytes
  • 简单的防溢出的做法是使用 long 类型作为返回值,只需要在最后判断溢出
class Solution {
 public:
  int reverse(int x) {
    long res = 0;
    while (x) {
      res = res * 10 + x % 10;
      x /= 10;
    }
    if (res > INT_MAX || res < INT_MIN) {
      return 0;
    }
    return res;
  }
};
  • 使用 int 则每次都需要判断下一次是否溢出
class Solution {
 public:
  int reverse(int x) {
    int res = 0;
    while (x) {
      int t = x % 10;
      if (res > INT_MAX / 10 || (res == INT_MAX / 10 && t > (INT_MAX % 10))) {
        return 0;
      }
      if (res < INT_MIN / 10 || (res == INT_MIN / 10 && t < (INT_MIN % 10))) {
        return 0;
      }
      res = res * 10 + t;
      x /= 10;
    }
    return res;
  }
};