1、题目
你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
输入:x = 123
输出:321
输入:x = -123
输出:-321
输入:x = 120
输出:21
输入:x = 0
输出:0
2、解法
from typing import List
class Solution:
def reverse(self, x: int) -> int:
# (1)切片
num = str(x)
result = -int(num[1:][::-1]) if num[0] == '-' else int(num[::-1])
if result > 2 ** 31 - 1 or result < -2 ** 31:
return 0
return result
# # (2)内置函数
res = int(str(x)[::-1]) if x >= 0 else -int(str(x)[1:][::-1])
return 0 if res > pow(2, 31) - 1 or res < -pow(2, 31) else res
# 我刚开始的解法
# x1 = str(abs(x))
# li = [x1[i] for i in range(len(x1))]
# li[:] = li[::-1]
# a = int("".join(li))
# if x == 0:
# return 0
# if x < 0:
# return -a
# return a
# 一次循环
# 双指针
if __name__ == '__main__':
x = -1534
a = Solution()
print(a.reverse(x))
3、思路
# 切片
(1)整数反转切到字符串反转
num = str(x)
(2)如果字符串以-开头,反转-后面的字符串化整并加-,如果不以-开头,直接反转字符串并化整
result = -int(num[1:][::-1]) if num[0] == '-' else int(num[::-1])
(3)如果反转后的结果大于xxx,小于xxx,则返回0
if result > 2 ** 31 - 1 or result < -2 ** 31:
return 0
(4)最终返回所有的result
return result