LeetCode 题之整数反转

LeetCode 题之整数反转


题目地址

解法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() 用于将迭代对象强制转化为列表;即列表、元组、字符串这些迭代对象之间能互相转化,而列表与整数则不能(因为整数不是迭代对象)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值