给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
思路
首先将数字转化为字符串;
将字符串转化为字符列表,如果是负数,那么第一个字符就是‘-’,所以从第二个位置是数字字符串的开始位置,例如:-1240,字符列表为[‘1’,‘2’,‘4’,‘0’]
将字符列表反转,如果反转后,数字前面有0就依次去掉 例如[‘4’,‘2’,‘1’]
将反转后的字符列表用join方法连接成一个字符串,[‘4’,‘2’,‘1’] -》 "421"
判断数字的符号,如果是负数,那么字符串前面添加负号,再转化成整数,判断整数的范围;如果是正数,判断正数的范围,返回结果。
python3解法
class Solution:
def reverse(self, x: int) -> int:
xstr = str(x)
temp = ''
xlist = [i for i in xstr]
if xlist[0] == '-':
temp = xlist.pop(0)
xlist.reverse()
while xlist[0] == '0':
xlist.pop(0)
xstr = ''.join(xlist)
if temp == '-':
return int(temp + xstr) if int(temp + xstr) > -math.pow(2,31) else 0
else:
return int(xstr) if int(xstr) < math.pow(2,31) -1 else 0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
网友评论