亲宝软件园·资讯

展开

7. 整数反转

raykindle 人气:2

题目:

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321 

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

 

★ 注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0

 

解法:

  • 转字符串法:

 

 1 class Solution:
 2     def intReverse(self, x):
 3         str_x = str(x)
 4         if str_x[0] != '-':
 5             x = int(str_x[::-1])
 6         else:
 7             x = -int(str_x[:0:-1])  # [i:j:-1], j是取不到的,当i和j不给出时,i代表-1,j代表-len(a)-1,
 8                                     # 所以str_x[:0:-1]也可以写成str_x[:len(str_x):-1]
 9         
10         # 数值范围[-2^31, 2^31-1]————>用二进制表示:[-(1<<31), (1<<31)-1]
11         return  x if -(1<<31) < x < (1<<31)-1 else 0
View Code

 

  • 数学法:

 

 1 class Solution:
 2     def intReverse(self, x):
 3         y, rev = abs(x), 0
 4         # 数值范围[-2^31, 2^31-1]————>用二进制表示:[-(1<<31), (1<<31)-1]
 5         boundary = (1<<31)-1 if x>0 else 1<<31
 6         while y != 0:
 7             rev = rev*10 + y%10
 8             if rev > boundary:
 9                 return 0
10             else:
11                 y //= 10
12         return rev if x > 0 else -rev
View Code

 

  • 延伸知识点:

 

加载全部内容

相关教程
猜你喜欢
用户评论