返回

9. 回文数 - 巧妙解题,挑战思维,轻松掌握回文判断

前端

理解回文数

回文数是指一个数字正序(从左向右)和倒序(从右向左)读起来都相同的整数。例如,121、12321和1234321都是回文数。
回文数具有以下性质:

  1. 个位数是回文数
  2. 一个两位数是回文数当且仅当它的两个数字相同
  3. 一个三位数是回文数当且仅当它的第一个数字和最后一个数字相同,且中间的数字是回文数
  4. 一个四位数是回文数当且仅当它的第一个数字和最后一个数字相同,且中间的两个数字是回文数

巧妙算法判断回文数

判断一个整数是否为回文数,我们可以使用以下算法:

  1. 将整数转换为字符串
  2. 使用字符串的 reverse() 方法将字符串反转
  3. 将反转后的字符串与原字符串进行比较
  4. 如果两个字符串相等,则该整数为回文数,否则不是

代码实现

Python

def is_palindrome(n):
    # 将整数转换为字符串
    n_str = str(n)

    # 使用字符串的 reverse() 方法将字符串反转
    reversed_n_str = n_str[::-1]

    # 将反转后的字符串与原字符串进行比较
    return n_str == reversed_n_str


# 测试
print(is_palindrome(121))  # True
print(is_palindrome(-121))  # False
print(is_palindrome(10))  # False
print(is_palindrome(12321))  # True

Java

public class Palindrome {

    public static boolean isPalindrome(int n) {
        // 将整数转换为字符串
        String n_str = String.valueOf(n);

        // 使用字符串的 reverse() 方法将字符串反转
        String reversed_n_str = new StringBuilder(n_str).reverse().toString();

        // 将反转后的字符串与原字符串进行比较
        return n_str.equals(reversed_n_str);
    }

    // 测试
    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(12321));  // True
    }
}

C++

#include <iostream>
#include <string>

using namespace std;

bool isPalindrome(int n) {
    // 将整数转换为字符串
    string n_str = to_string(n);

    // 使用字符串的 reverse() 方法将字符串反转
    string reversed_n_str(n_str.rbegin(), n_str.rend());

    // 将反转后的字符串与原字符串进行比较
    return n_str == reversed_n_str;
}

// 测试
int main() {
    cout << isPalindrome(121) << endl;  // True
    cout << isPalindrome(-121) << endl;  // False
    cout << isPalindrome(10) << endl;  // False
    cout << isPalindrome(12321) << endl;  // True

    return 0;
}

总结

本文中,我们深入探讨了回文数的概念,并提供了一种巧妙的算法来判断一个整数是否为回文数。同时,我们使用Python、Java和C++三种编程语言来实现回文数的判定方法,并附上详细的代码示例。这些代码可以帮助您轻松理解和掌握回文数的判定技巧,以及其在实际场景中的应用。

希望本文对您有所帮助,如果您有任何疑问或建议,请随时与我联系。