Problem
Given a 32-bit signed integer, reverse digits of an integer.
https://leetcode.com/problems/reverse-integer/
Note
- the input is assumed to be a integer within the 32-bit signed inreger. Your function returns o when the reversed integer overflows. 注意溢出情况
- 原整数以0结尾,注意反转后去掉开头的0。
- 判断输入的正负。
idea#1
对10进行取余,乘以十赋值新的整数
code 12ms
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
flag = 1 if x>0 else -1
rev, x = 0, abs(x)
while x:
rev = 10 * rev + x % 10
x /= 10
rev = flag * rev
return rev if rev.bit_length() < 32 else 0
idea#2
直接利用python的字符串反转操作。
先将整数转换为字符,反转后转回整数int(str(x))
。
code 40ms
class Solution:
def reverse(self, x: int) -> int:
rev = int(str(x)[::-1]) if x>0 else -int(str(-x)[::-1]) # 也可用cmp(x,0)判断x正负
return rev if rev.bit_length() < 32 else 0 # 也可用rev * (rev < 2**31)
Summary
Python的字符反转操作