Java函数:如何判断一个字符串是不是回文串?
发布时间:2023-05-20 14:10:08
回文串是指从左往右和从右往左读都一样的字符串。比如"level"、"noon"、"dad"等都是回文串。
在Java中,判断一个字符串是否为回文串可以通过以下常规方法来实现:
1. 字符串反转
将原字符串反转并与原字符串进行对比,如果相同则为回文串。
public static boolean isPalindrome(String s) {
return s.equals(new StringBuilder(s).reverse().toString());
}
2. 逐个字符对比
从字符串的两端开始,逐个对比字符是否相同,直到中间或找到不同的字符,如果到中间都相同,则为回文串。
public static boolean isPalindrome(String s) {
int i = 0, j = s.length() - 1;
while (i < j) {
if (s.charAt(i) != s.charAt(j)) {
return false;
}
i++;
j--;
}
return true;
}
3. 递归判断
也可以使用递归的方法来判断一个字符串是否为回文串。递归时,将字符串的首尾字符对比,若相同则继续递归判断去掉首尾字符的子串是否为回文串,直到中间或出现不同的字符。
public static boolean isPalindrome(String s) {
if (s.length() == 0 || s.length() == 1) {
return true;
}
if (s.charAt(0) == s.charAt(s.length() - 1)) {
return isPalindrome(s.substring(1, s.length() - 1));
}
return false;
}
以上是三种常规的判断字符串是否为回文串的方法,其中方法一和方法二的时间复杂度均为 O(n),而方法三的时间复杂度在最坏情况下为 O(n^2),因为递归调用时创建了许多子串,所以不建议使用第三种方法。
