Java函数-如何判断一个字符串是否是回文字符串?
一、什么是回文字符串
回文字符串是指正着读和反着读都一样的字符串,比如"level"、"racecar"等。
二、判断一个字符串是否是回文字符串的方法
1. 逐个比较
将字符串转换成字符数组,用两个指针分别指向字符数组的首尾,逐个比较字符是否相等,如果出现有字符不相等的情况,则不是回文字符串,否则就是回文字符串。
代码实现:
public static boolean isPalindrome(String s){
char[] chars = s.toCharArray();
int i = 0;
int j = chars.length - 1;
while(i < j){
if(chars[i] != chars[j]){
return false;
}
i++;
j--;
}
return true;
}
2. 反转字符串比较
将字符串反转,与原字符串比较,如果相等,则是回文字符串,否则不是。
代码实现:
public static boolean isPalindrome(String s){
String reverseS = new StringBuilder(s).reverse().toString();
return s.equals(reverseS);
}
三、测试代码
public static void main(String[] args){
String[] testCases = {"level", "racecar", "hello", "world", ""};
for(String s : testCases){
System.out.println(s + " is palindrome? " + isPalindrome(s));
}
}
输出结果为:
level is palindrome? true
racecar is palindrome? true
hello is palindrome? false
world is palindrome? false
is palindrome? true
四、考虑到特殊情况的判断
需要考虑到字符串为空的情况,判断方法如下:
public static boolean isPalindrome(String s){
if(s == null || s.length() == 0){
return true;
}
char[] chars = s.toCharArray();
int i = 0;
int j = chars.length - 1;
while(i < j){
if(chars[i] != chars[j]){
return false;
}
i++;
j--;
}
return true;
}
五、总结
判断一个字符串是否是回文字符串的方法有两种:逐个比较和反转字符串比较。需要注意的是,需要考虑到字符串为空的情况。
