7. 整数反转

mac2022-06-30  23

链接:https://leetcode-cn.com/problems/reverse-integer/

class Solution { public: int reverse(int x) { // 假设我们的环境只能存储得下 32 位的有符号整数 // 则其数值范围为 [−231, 231 − 1] if (x == INT_MIN) { return 0; } // 记录符号 int sign = 1; if (x < 0) { sign = -1; x = -x; } // 记录反转的数字 int reverse_sum = 0; while (x >= 1) { // 溢出情况,返回0 if (sign > 0 && ((reverse_sum > INT_MAX/10) || (reverse_sum == INT_MAX/10 && x > INT_MAX))) { return 0; } if (sign < 0 && ((sign * reverse_sum < INT_MIN/10) || (sign * reverse_sum == INT_MIN/10 && sign*x < INT_MIN))) { return 0; } // 累加反转数字 reverse_sum = reverse_sum * 10 + x % 10; // 极值 if (sign > 0 && reverse_sum == INT_MAX) { return INT_MAX; } if (sign < 0 && reverse_sum == INT_MIN) { return INT_MIN; } x /= 10; } // 反转数字加上符号位 return sign * reverse_sum; } };

 

最新回复(0)