Java函数使用示例:如何检查字符串是否为回文字符串?
发布时间:2023-07-04 09:19:01
回文字符串是指正读和反读都相同的字符串,比如"level"、"radar"等。在Java中,可以使用以下函数来检查字符串是否为回文字符串:
public static boolean isPalindrome(String str) {
// 将字符串转换为小写,并去除空格和标点符号
str = str.toLowerCase().replaceAll("[^a-z0-9]", "");
// 使用双指针判断正读和反读字符是否相同
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
上述代码中,首先将字符串转换为小写的形式,并且去除空格和标点符号。这样做是为了忽略大小写和标点对判断的干扰。接下来,使用双指针方法来判断正读和反读字符是否相同。如果发现不相同的字符,则返回false。如果全部字符比较完毕后都未发现不相同的字符,则返回true,表示该字符串为回文字符串。
下面是一个使用示例:
public class Main {
public static void main(String[] args) {
String str = "level";
boolean result = isPalindrome(str);
if (result) {
System.out.println(str + " is a palindrome.");
} else {
System.out.println(str + " is not a palindrome.");
}
}
public static boolean isPalindrome(String str) {
// 将字符串转换为小写,并去除空格和标点符号
str = str.toLowerCase().replaceAll("[^a-z0-9]", "");
// 使用双指针判断正读和反读字符是否相同
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
}
运行上述示例代码,输出结果为:
level is a palindrome.
可以看到,输出结果提示"level is a palindrome.",说明该字符串"level"确实是一个回文字符串。
需要注意的是,上述代码只考虑了字母和数字的回文字符串判断,而忽略了其他字符,比如空格和标点符号。如果需要考虑全部字符的回文字符串判断,可以修改正则表达式[^a-z0-9],使其匹配其他字符。
