Java函数:如何判断一个字符串是否为回文串?
发布时间:2023-05-24 04:07:56
一、回文串的定义
回文串,即正反读都相同的字符串,例如“level”、“noon”、“racecar”等。
二、判断方法
1. 方法一:利用StringBuilder的reverse()方法
Java中的StringBuilder类有一个reverse()方法,可以将字符串反转,我们只需要将原字符串和反转后的字符串进行比较即可。
代码如下:
public static boolean isPalindrome(String str) {
StringBuilder sb = new StringBuilder(str);
String reversedStr = sb.reverse().toString();
return str.equals(reversedStr);
}
2. 方法二:利用双指针法
双指针法是一种常见的字符串操作方法,我们可以用双指针法判断给定的字符串是否为回文串。
具体做法如下:
- 定义两个指针i和j,分别指向字符串的首尾。
- 如果s[i]等于s[j],那么指针向中间移动;否则,直接返回false。
- 如果指针相遇或者交错,说明字符串是回文串。
代码如下:
public static boolean isPalindrome(String str) {
int i = 0, j = str.length() - 1;
while (i < j) {
if (str.charAt(i) != str.charAt(j)) {
return false;
}
i++;
j--;
}
return true;
}
注:charAt()方法用于返回指定位置的字符。
三、测试代码
public static void main(String[] args) {
System.out.println(isPalindrome("level")); // true
System.out.println(isPalindrome("hello")); // false
System.out.println(isPalindrome("A man a plan a canal Panama")); // true
}
四、总结
本文介绍了两种判断给定字符串是否为回文串的方法,分别是利用StringBuilder的reverse()方法和双指针法。这两种方法的时间复杂度都是O(n),其中n为字符串的长度。在实际开发中,可以根据不同的需求选择不同的方法。
