7. 整数反转[Easy]
7. 整数反转[Easy]
https://leetcode-cn.com/problems/reverse-integer
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2**31, 2**31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
通过次数367,169提交次数1,072,379
First Try
2020-06-04
使用字符串暴力破解,而且python下没有考虑rv_x < -2**31 or rv_x > 2**31 - 1这个判断本身就代表该环境可以存储大于32位的数字,不过提交没有问题。
字符串暴力解法
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
strx = str(x)
n_sign = 1 if x<0 else 0
pure_reverse = strx[n_sign:len(strx)][::-1]
rv_x = -int(pure_reverse) if n_sign else int(pure_reverse)
if(rv_x < -2**31 or rv_x > 2**31 - 1): # 这个溢出判断有点投机取巧
return 0
return rv_x
- 执行用时 :36 ms, 在所有 Python 提交中击败了40.94%的用户
- 内存消耗 :12.6 MB, 在所有 Python 提交中击败了6.45%的用户
python的负数取余
看题解才知道python的负数取余与c和java都不一样,python的余数一直都是整数,而java则不是,这就很尴尬了。题解的数学解法在python这边就很难搞定了。
In [7]: divmod(-11, 10)
Out[7]: (-2, 9)
https://www.zhihu.com/question/34116024
