题目:
给你一个 32 位的有符号整数
x
,返回将x
中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围
[−231, 231 − 1]
,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。
来源:力扣(LeetCode)
链接:力扣
示例:
示例 1:
输入:x = 123
输出:321
示例 2:输入:x = -123
输出:-321
示例 3:输入:x = 120
输出:21示例 4:
输入:x = 0
输出:0
解法:
将输入int转为str(不带符号),判断是否为负数,如果为负数flag设为-1,如果为正数,flag设为1。然后将str反转,反转前将末尾的0剔除,如果输入为0,那就置为0。最后输出反转后的结果,转为int,*flag,然后判断是否在
[−231, 231 − 1]
内,在的话就返回,不在的话,返回0。
知识点:
1.str.lstrip(char):用于移除字符串头指定的字符(默认为空格或换行符)或字符序列。比如' python '.lstrip('y p')结果为'thon '。
代码:
class Solution: def reverse(self, x: int) -> int: input = str(x)[1:] if str(x)[0] == '-' else str(x) flag = -1 if str(x)[0] == '-' else 1 output = input[::-1].lstrip('0') if input != '0' else 0 return int(output) * flag if pow(-2, 31) <= int(output) * flag <= pow(2, 31) - 1 else 0