#include <climits> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param x int整型 * @return int整型 */ const int INT_MAX_BOUND = 147483647; const int INT_MIN_BOUND = -147483648; int reverse(int x) { int ans = 0, length = 0; // 提取最低位数字,因为在反转后,最低位数字将变为为最高位数字 int lowest_digit = x % 10; x /= 10; // 将剩余部分反转 while (x) { ans = ans * 10 + x % 10; x /= 10; ++length; } if (length == 9) { // 检测所有溢出情况 if (lowest_digit > 2 || lowest_digit < -2 || (lowest_digit == 2 && ans > INT_MAX_BOUND) || (lowest_digit == -2 && ans < INT_MIN_BOUND)) { ans = 0; } else { ans = lowest_digit * pow(10, length) + ans; } } else { ans = lowest_digit * pow(10, length) + ans; } return ans; } };