• python经典百题之判断回文数


    题目:一个5位数,判断它是不是回文数

    即12321是回文数,个位与万位相同,十位与千位相同

    程序分析

    回文数是指一个数从左向右和从右向左读是一样的,例如:12321。我们需要编写一个程序来判断一个5位数是否是回文数。

    方法1: 转换成字符串

    def is_palindrome(num):
        num_str = str(num)
        return num_str == num_str[::-1]
    
    def main():
        num = int(input("请输入一个5位数: "))
        if is_palindrome(num):
            print("是回文数")
        else:
            print("不是回文数")
    
    if __name__ == "__main__":
        main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解题思路:

    • 将数字转换成字符串,然后判断反转后的字符串是否和原始字符串相等。

    优点:

    • 实现简单,逻辑清晰。

    缺点:

    • 需要将数字转换成字符串,会引入一定的额外开销。

    方法2: 反转数字

    def is_palindrome(num):
        reversed_num = 0
        original_num = num
    
        while num > 0:
            remainder = num % 10
            reversed_num = reversed_num * 10 + remainder
            num //= 10
    
        return reversed_num == original_num
    
    def main():
        num = int(input("请输入一个5位数: "))
        if is_palindrome(num):
            print("是回文数")
        else:
            print("不是回文数")
    
    if __name__ == "__main__":
        main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    解题思路:

    • 将数字反转,然后判断反转后的数字是否和原始数字相等。

    优点:

    • 不需要额外的空间,只需要数值运算。

    缺点:

    • 需要遍历两次数字。

    方法3: 使用数组

    def is_palindrome(num):
        digits = []
        original_num = num
    
        while num > 0:
            digits.append(num % 10)
            num //= 10
    
        # 逐位判断是否是回文数
        for i in range(len(digits) // 2):
            if digits[i] != digits[len(digits) - i - 1]:
                return False
    
        return True
    
    def main():
        num = int(input("请输入一个5位数: "))
        if is_palindrome(num):
            print("是回文数")
        else:
            print("不是回文数")
    
    if __name__ == "__main__":
        main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    解题思路:

    • 将数字的每一位存储到数组中,然后逐位比较判断是否是回文数。

    优点:

    • 不需要额外的空间,只需要数值运算。

    缺点:

    • 需要遍历两次数字。

    方法总结及推荐

    • 推荐方法: 方法1和方法2都是很好的选择,它们不需要额外空间,只需要数值运算,并且代码简洁明了。

    • 适用场景:

      • 对于这种回文数判断问题,推荐使用方法1或方法2。它们不需要额外的空间,效率较高。
      • 如果问题需要将数字转换成字符串,可以考虑方法1,但需要注意额外开销。

    综上所述,方法1(转换成字符串)和方法2(反转数字)是较好的选择,可以根据具体场景选择其中一种。方法3(使用数组)也可用,但由于可能引入额外空间,不推荐在不必要的情况下使用。

  • 相关阅读:
    【原创】辟谣,实测MyBatisPlus批量新增更新方法确实有效,且可单独使用无需跟随IService
    Nature Communications | 张阳实验室:端到端深度学习实现高精度RNA结构预测
    实现 easyExcel 导入导出自定义字典转换器
    目标检测YOLO实战应用案例100讲-基于改进YOLOv5s的道路目标检测
    数据结构篇【4】——哈希(散列)线性探测实现
    某网站视频播放花屏解密
    索辰科技在科创板过会:拟募资金额有所下调,上半年亏损4000万元
    低代码到底是什么?
    【mysql 统计表里面6个月的数据】
    淘宝双11数据分析与预测课程案例中(林子雨)错误点总结
  • 原文地址:https://blog.csdn.net/yechuanhui/article/details/133165060