1.这个题目就是反转整数
7. Reverse Integer.JPG链接:
https://leetcode.com/problems/reverse-integer/
解题思路就是:
因为不能用数组,所以只能使用取余数的方法,要考虑溢出的情况。
1.将传入的数x取余(余数为pop)
2.将得到的余数pop放入新的变量rev中。
3.每次对原先的数整除10,并对新的变量rev乘以10
4.在每一次得到新的rev之前,判断是否要跃出边界了。2^31次方是2147483648,因此,如果原先的数是214748364时,pop不得大于7.(为什么不在程序开始时判断,是因为只有反转过来之后,才知道会不会越界。)
ps:注意的是python3中的整除是'//'
2.题解:
class Solution:
def reverse(self,x):
"""
:type x: int
:rtype: int
"""
flag = 0
##判断正负
if x < 0:
x = -x
flag=1
rev = 0
##循环的转向
while(x != 0):
pop = x % 10
x = x // 10
temp = rev * 10 + pop
##判断是否越界
if (rev > pow(2,31)/10 or (rev== pow(2,31)/10 and pop >7)):
return 0
rev = temp
if flag == 1:
return -1*rev
else:
return rev
3.完整代码
查看链接:
https://github.com/Wind0ranger/LeetcodeLearn/blob/master/other/7-reverse-integer.py
网友评论