在LintCode上练习遇到这个问题,查阅资料找到多种方法,总结如下。
输入 | 输出 |
---|---|
123 | 321 |
第一种:整数方法取余取整实现
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Solution: """ @param number: A 3-digit number. @return: Reversed number. """ def reverseInteger( self , number): g = number % 10 #取出个位数 s = ( int (number / 10 )) % 10 #取出十位数 b = int (number / 100 ) #取出百位数 return g * 100 + s * 10 + b if __name__ = = "__main__" : so = Solution() print (so.reverseInteger( 123 )) |
python不和C语言一样自动截取保留整数,需要用 int 转换一下
第二种:使用字符串切片
1
2
3
4
5
|
def reverseInteger( self , number): number = str (number) result = number[:: - 1 ] result = ( int (result)) return result |
借用字符串的方法处理
第三种:使用栈
1
2
3
4
5
6
7
|
def reverseInteger( self , number): number = str (number) #模拟入栈 l = list (number) result = "" while len (l)> 0 : result + = l.pop() #模拟出栈 return int (result) |
补充:Python程序:任意输入一个三位数,然后把三位数的位置反转输出。
第一种方法
把输入的三位数百位、十位和个位依次表示出来,然后将个位数字和百位数字进行交换。
1
2
3
4
5
6
7
8
|
#输入number = 123,输出321 number = int ( input ( '请输入一个三位数:' )) a = number % 10 #个位 b = number / / 10 % 10 #十位 c = number / / 100 #百位 re_number = a * 100 + b * 10 + c print ( '%d的反转数是:%d' % (number,re_number)) #第一种输出方式 print ( '{0}的反转数是:{1}' . format (number,re_number)) #第二种输出方式 |
第二种方法
将输入的三位数以字符串的形式用list()方法列表化,然后逆序从列表中依次取出个位、十位、百位,输出的时候注意将str类型转换为int类型。
1
2
3
4
5
6
7
8
9
10
|
#输入number = 123,输出321 number = input ( '请输入一个三位数:' ) list1 = list (number) #将输入的三位数的字符串存入列表 list1.reverse() #将列表元素反转 a = int (list1[ 0 ]) #取出反转后列表的元素并将其类型转为int类型 b = int (list1[ 1 ]) c = int (list1[ 2 ]) #也可以不反转列表,直接反着取出列表中的元素 re_number = a * 100 + b * 10 + c print ( '%s的反转数是:%s' % (number,re_number)) print ( '%d的反转数是:%d' % ( int (number),re_number)) |
以上就是我所想到的输出3位数反转数的方法,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/yijiangzhao/article/details/87609982