前言:目前已学习过python的基本语法知识,但缺乏实际锻炼,在解决实际问题时无法熟练运用,故希望通过刷题提高编程技术和编程思维。
题目:反转一个只有3位数的整数。
可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000。
例如number = 123,输出321;number = 900,输出9。
解法1:
将三位整数看成 百位a、十位b 和 个位c ,反转后就变成了百位c、十位b、个位a。
那么 首先 a= number // 100,b = (number - a*100) // 10,c = number % 10,
最后 number = c*100 + b*10 + a
class Solution:
"""
@param number: A 3-digit number.
@return: Reversed number.
"""
def reverseInteger(self, number):
a = number // 100 #//取整
print(a)
b = (number - a*100) // 10 #(number-a*100)获取余下10的倍数,再取整
print(b)
c = number %10
print(c)
number = c*100 + b*10 + a #重新组装number
return number
解法2:
首先将三位整数转化为字符串,然后通过字符串的切片反转,最后再将反转后的字符串转化为整数。
字符串切片:
利用索引进行切片操作时包含3个参数,[start_index: stop_index: step]
- 当 step>0,start_index 的空值下标为 0,stop_index 的空值下标为 length,step 的方向是左到右
- 当 step<0,start_index 的空值下标为 length,stop_index 的空值下标为 0,此时反向为右到左了
- start_index、 stop_index 空值代表的头和尾,是随着 step 的正负而改变的
- step是步长,同时它的正负也代表着切片的顺序,正数为从左到右,负数为从右到左
所以通过str[::-1]可以实现字符串的反转操作
int()是Python标准内置函数,用于将字符串转换为整数值。使用包含一个数字作为参数的字符串调用它,它返回转换为实际整数的数字。
所以会将'009' 转换为实际整数 9
class Solution:
"""
@param number: A 3-digit number.
@return: Reversed number.
"""
def reverseInteger(self, number):
s = str(number) #将数字转换为字符串
s = s[::-1] #通过倒序切片反转字符串
n = int(s) #最后将字符串转换为整数
return n
# 合并成一句就是:return (int(str(number)[::-1]))
总结:目前感想是拿到一个题目,将其落脚于实际,先从解决一个实际的例子开始,再想着把其抽象化形成解决问题的方法。并且不管黑猫白猫,只要能解决问题的就是好猫,无论解决方式高级与否,都需要先解决问题。虽然现在我还不能熟练运用,仍要坚持多多动脑,从不同维度去思考。