LeetCode---整数反转
整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
示例
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-231 <= x <= 231 - 1
python 实现
def reverse(x: int):# 定义 32 位有符号整数的范围INT_MIN, INT_MAX = -2 ** 31, 2 ** 31 - 1# 初始化结果变量result = 0# 取绝对值处理,保留符号信息sign = -1 if x < 0 else 1x = abs(x)while x != 0:# 取出最后一位数字digit = x % 10# 更新结果result = result * 10 + digit# 去除最后一位数字x //= 10# 恢复符号result *= sign# 检查是否溢出if result < INT_MIN or result > INT_MAX:return 0return resultif __name__ == '__main__':print(reverse(-123))
Java 实现
class Solution {public int reverse(int x) {// 定义 32 位有符号整数的范围int INT_MIN = Integer.MIN_VALUE;int INT_MAX = Integer.MAX_VALUE;int result = 0;while (x != 0) {// 取出最后一位数据int digit = x % 10;// 检查是否会溢出if (result > INT_MAX / 10 || (result == INT_MAX / 10 && digit > 7)) return 0;if (result < INT_MIN / 10 || (result == INT_MIN / 10 && digit < -8)) return 0;// 更新结果result = result * 10 + digit;// 去掉最后一位数字x /= 10;}return result;}
}