7.给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
#目前还是有错误
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x>=-2**31 and x<=2**31-1:
j=0
if x>0:
x_str = str(x)
x_str_rev = x_str[::-1]
for i in x_str_rev:
j=j+1
if i!="0":
x_str_rev = x_str_rev[j-1:]
x_int = int(x_str_rev)
return x_int
elif x<0:
x_str = str(x)
x_str_rev = x_str[::-1]
x_str_rev = x_str_rev [1:]
for i in x_str_rev:
j=j+1
if i=="0":
x_str_rev1=x_str_rev[j:]
x_str_rev1 = x_str_rev[j-1:]
x_int = int(x_str_rev)
return 0-x_int
elif x==0:
return x
else:
return 0
改进版
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x >= 0:
reversed_x = int(str(x)[::-1])
else:
reversed_x = -int(str(x)[:0:-1])
if -2 ** 31 < reversed_x < 2 ** 31 - 1:
return reversed_x
else:
return 0
字符串拼接:
str[::-1]表示将所有字符串反转
str[:0:-1]表示将除去第一个字符串反转
当表示翻转时,区间范围是反着写的
x=-100
reversed_x = -int(str(x)[:0:-1]) #int之后001变成1
print(reversed_x)
print(str(x)[::-1])
print(str(x)[:0:-1])
print(str(x)[2:0:-1])
输出:
-1
001-
001
01