java如何判断回文
判断字符串是否为回文的方法
回文是指正读和反读都相同的字符串。以下是几种在Java中判断字符串是否为回文的方法:
方法一:使用StringBuilder反转字符串
创建一个StringBuilder对象,利用其reverse()方法反转字符串,然后与原字符串比较。

public static boolean isPalindrome(String str) {
String reversed = new StringBuilder(str).reverse().toString();
return str.equals(reversed);
}
方法二:双指针法
使用两个指针,一个从字符串开头向后移动,另一个从末尾向前移动,逐个比较字符。

public static boolean isPalindrome(String str) {
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
方法三:递归方法
通过递归方式比较字符串的首尾字符,逐步缩小检查范围。
public static boolean isPalindrome(String str) {
if (str.length() <= 1) {
return true;
}
if (str.charAt(0) != str.charAt(str.length() - 1)) {
return false;
}
return isPalindrome(str.substring(1, str.length() - 1));
}
方法四:忽略大小写和非字母数字字符
在实际应用中,可能需要忽略大小写和非字母数字字符。可以使用正则表达式预处理字符串。
public static boolean isPalindrome(String str) {
String cleaned = str.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
String reversed = new StringBuilder(cleaned).reverse().toString();
return cleaned.equals(reversed);
}
注意事项
- 以上方法默认区分大小写,如需忽略大小写,可以在比较前将字符串转换为统一大小写。
- 对于包含空格或标点符号的字符串,需要先进行清理。
- 双指针法和StringBuilder反转法的时间复杂度均为O(n),但双指针法空间复杂度更低。






