写一个Java函数来判断一个字符串是否为回文字符串
发布时间:2023-07-30 13:05:49
回文字符串是指从左到右和从右到左读取都一样的字符串。我们可以使用两个指针,一个指向字符串的开头,一个指向字符串的结尾,逐个比较字符是否相同,直到两个指针相遇或者找到不相同的字符为止。
下面是一个简单的Java函数来判断一个字符串是否为回文字符串:
public boolean isPalindrome(String s) {
// 删除字符串中的非字母和数字字符,并转为小写
String cleanedString = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
// 初始化指针
int left = 0;
int right = cleanedString.length() - 1;
// 逐个比较字符
while (left < right) {
if (cleanedString.charAt(left) != cleanedString.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
该函数首先删除字符串中的非字母和数字字符,并将字符串转为小写,以便于比较。然后,使用两个指针分别指向字符串的开头和结尾,逐个比较字符是否相同。如果找到不相同的字符,则返回false;如果两个指针相遇,说明整个字符串都是回文的,返回true。
下面是一些测试样例:
public static void main(String[] args) {
String s1 = "A man, a plan, a canal, Panama!";
String s2 = "race a car";
String s3 = "Able was I saw Elba";
System.out.println(isPalindrome(s1)); // true
System.out.println(isPalindrome(s2)); // false
System.out.println(isPalindrome(s3)); // true
}
输出结果:
true false true
这个函数的时间复杂度是O(n),其中n是字符串的长度。
