返回
9. 回文数 - 巧妙解题,挑战思维,轻松掌握回文判断
前端
2023-11-22 10:07:25
理解回文数
回文数是指一个数字正序(从左向右)和倒序(从右向左)读起来都相同的整数。例如,121、12321和1234321都是回文数。
回文数具有以下性质:
- 个位数是回文数
- 一个两位数是回文数当且仅当它的两个数字相同
- 一个三位数是回文数当且仅当它的第一个数字和最后一个数字相同,且中间的数字是回文数
- 一个四位数是回文数当且仅当它的第一个数字和最后一个数字相同,且中间的两个数字是回文数
巧妙算法判断回文数
判断一个整数是否为回文数,我们可以使用以下算法:
- 将整数转换为字符串
- 使用字符串的 reverse() 方法将字符串反转
- 将反转后的字符串与原字符串进行比较
- 如果两个字符串相等,则该整数为回文数,否则不是
代码实现
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++三种编程语言来实现回文数的判定方法,并附上详细的代码示例。这些代码可以帮助您轻松理解和掌握回文数的判定技巧,以及其在实际场景中的应用。
希望本文对您有所帮助,如果您有任何疑问或建议,请随时与我联系。