返回

探索回文数字的奥秘——LeetCode 9. 回文数

后端

回文数:概念与检测

回文数:正反读都一样

回文数,又称回文数,指的是从左到右读和从右到左读都相同的一串数字。例如,121、999、1221 等都是回文数。它们在数学和计算机科学领域有广泛的应用,经常出现在各种算法和编程面试题中。

Python解决方案:优雅且简洁

在Python中,我们可以使用内置的 str() 函数将整数转换为字符串,然后使用 [::-1] 切片操作符来反转字符串。如果转换后的字符串等于原始字符串,那么该整数就是回文数。以下示例展示了这一方法:

def is_palindrome(x):
    """
    判断一个整数是否为回文数

    Args:
        x: 待判断的整数

    Returns:
        布尔值,True 表示是回文数,False 表示不是回文数
    """

    # 将整数转换成字符串
    x_str = str(x)

    # 判断字符串是否为回文
    return x_str == x_str[::-1]


# 测试代码
print(is_palindrome(121))  # True
print(is_palindrome(-121))  # False
print(is_palindrome(10))  # False
print(is_palindrome(11))  # True

Java解决方案:清晰且易读

在Java中,我们可以使用 String.valueOf() 方法将整数转换为字符串,然后使用 StringBuilder.reverse() 方法反转字符串。如果转换后的字符串等于原始字符串,那么该整数就是回文数。以下示例展示了这一方法:

public class PalindromeNumber {

    public static boolean isPalindrome(int x) {
        // 将整数转换成字符串
        String xStr = String.valueOf(x);

        // 判断字符串是否为回文
        return xStr.equals(new StringBuilder(xStr).reverse().toString());
    }

    public static void main(String[] args) {
        System.out.println(isPalindrome(121));  // True
        System.out.println(isPalindrome(-121));  // False
        System.out.println(isPalindrome(10));  // False
        System.out.println(isPalindrome(11));  // True
    }
}

总结

在本指南中,我们学习了如何判断一个数字是否为回文数,并提供了Python和Java两种语言的解决方案。希望这些信息对您有所帮助,如果您有任何问题或建议,欢迎在评论区留言。

常见问题解答

1. 负数也可以是回文数吗?

否,负数不能是回文数,因为反转负号会改变数字的值。

2. 回文数在数学中有什么应用?

回文数在数论中用于研究对称性和可逆性。它们还用于素数判定和加密学。

3. 回文数在计算机科学中有什么应用?

回文数在计算机科学中用于字符串处理、数据结构和算法设计。

4. 如何判断一个大整数是否为回文数?

对于大整数,我们可以将其转换为字符串并使用分治算法进行比较,从而避免不必要的整数运算。

5. 如何生成回文数?

生成回文数的一种方法是将一个数字与它的反转相加,然后重复此过程直到得到一个回文数。例如,19 + 91 = 110,110 + 011 = 121。