前言:目前已学习过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]可以实现字符串的反转操作

java反转一个三位整数 反转一个3位整数_字符串转换

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]))

总结:目前感想是拿到一个题目,将其落脚于实际,先从解决一个实际的例子开始,再想着把其抽象化形成解决问题的方法。并且不管黑猫白猫,只要能解决问题的就是好猫,无论解决方式高级与否,都需要先解决问题。虽然现在我还不能熟练运用,仍要坚持多多动脑,从不同维度去思考。