题目地址
解法1
代码
class Solution(object):
def reverse(self,x):
"""
:type x: int
:rtype: int
"""
num = []
def change(x):
# 限定范围
if (x > -2**31) and (x < (2**31-1)):
# range(1,11) 由于最大数的个数是10
for i in range(1,11):
if x >= 10:
if (x % 10 != 0)and(i==1):
num.append(x % 10)
if i > 1:
num.append(x % 10)
x //= 10
else:
num.append(x)
break
# 将列表的元素全转换为字符串
str1 = [str(i) for i in num]
str2=''.join(str1)
# 按限制范围输出
if (int(str2) > -2**31) and (int(str2) < (2**31-1)):
return (int(str2))
else:
return 0
else:
return 0
if x >= 0:
return change(x)
if x < 0:
x = -(x)
return (-change(x))
知识点
1.string 字符串不可修改,因此采用列表
2.创建空列表用 name = [ ]
3.向列表末尾加元素用 append() 函数
4.用 str()、int()等函数可进行类型的强制转化
5.if 条件语句中的逻辑与为 and,区别于其他语言的 &&
6.将列表转化为字符串,采用 join() 函数
7.s.join(iterable):将括号内的迭代对象(如列表)使用 s 字符串作为连接将迭代对象中的元素拼接成一个字符串并返回
8.迭代对象转化为字符串的前提是:对象里的元素均为字符串类型
解法2
既然是要倒叙输出,那么 Python 自带的 reverse() 函数呢?
class Solution(object):
def reverse(self,x):
"""
:type x: int
:rtype: int
"""
num = []
def change(x):
if (x > -2**31) and (x < (2**31-1)):
str1 = str(x)
str1 = list(str1)
str1.reverse()
if(str1[0] == 0):
for i in range(0,len(str1)):
str1[i] = str1[i+1]
str1 = str1.pop()
str1 = ''.join(str1)
if (int(str1) > -2**31) and (int(str1) < (2**31-1)):
return (int(str1))
else:
return 0
else:
return 0
if x >= 0:
return change(x)
if x < 0:
x = -(x)
return (-change(x))
知识点
1.reverse() 这一 Python 自带的反转函数是针对迭代对象的
2.len() 函数用于返回对象长度,即元素个数;注意与索引的区别与联系
3.pop() 函数用于删除列表最后一个元素
4.list() 用于将迭代对象强制转化为列表;即列表、元组、字符串这些迭代对象之间能互相转化,而列表与整数则不能(因为整数不是迭代对象)