返回

如何判断回文数?每日一练,算法技能 UP!

前端

前言

算法题是提升编程能力的利器,坚持每日一练,可以显著提升算法思维和解决问题的能力。今天,让我们来挑战一道经典题目:判断回文数。

什么是回文数?

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。比如,121、909、1221 都是回文数。

回文数的判断

判断回文数的方法有很多,以下是最常见的两种:

方法一:字符串翻转法

  1. 将整数 x 转换成字符串。
  2. 对字符串进行翻转。
  3. 比较原始字符串和翻转后的字符串是否相等。
  4. 相等则为回文数,否则不是。

代码示例:

def is_palindrome1(x):
    """
    字符串翻转法判断回文数
    Args:
        x: 待判断整数
    Returns:
        True if x is a palindrome, False otherwise
    """
    x_str = str(x)
    reversed_str = x_str[::-1]
    return x_str == reversed_str

方法二:数字逆置法

  1. 定义一个变量 reversed_num,初始化为 0。
  2. 循环将 x 除以 10,并将余数赋给 reversed_num。
  3. 将 x 除以 10。
  4. 重复步骤 2 和 3,直到 x 为 0。
  5. 比较 reversed_num 和 x 是否相等。
  6. 相等则为回文数,否则不是。

代码示例:

def is_palindrome2(x):
    """
    数字逆置法判断回文数
    Args:
        x: 待判断整数
    Returns:
        True if x is a palindrome, False otherwise
    """
    reversed_num = 0
    while x > 0:
        reversed_num = reversed_num * 10 + x % 10
        x //= 10
    return x == reversed_num

代码优化

上述两种方法都可以判断回文数,但方法一需要先将整数转换成字符串,然后翻转字符串,效率较低。方法二直接对数字进行操作,效率更高。

练习题

  1. 判断 121、-121、10 是否是回文数。
  2. 编写一个函数,找出给定范围内所有回文数。

参考链接

总结

判断回文数是一种常见的算法题,掌握以上两种方法,可以轻松应对类似题目。通过每日一练,持之以恒地提升算法思维,不断精进编程技能。