Java中编写一个函数,用于判断一个字符串是否为回文
回文是指正着读和反着读都一样的字符串,如“level”,“racecar”等。在Java中,可以编写一个函数来判断一个字符串是否是回文。
代码实现
函数名:isPalindrome
参数:一个字符串str
返回值:一个布尔值,表示是否是回文
代码如下:
public static boolean isPalindrome(String str) {
// 去除字符串中的空格和标点符号
str = str.replaceAll("[\\s\\p{Punct}]", "");
// 将字符串转换为小写,便于比较
str = str.toLowerCase();
// 初始化两个指针,分别指向字符串的开头和结尾
int i = 0, j = str.length() - 1;
// 依次比较两个指针指向的字符是否相等
while (i < j) {
if (str.charAt(i) != str.charAt(j)) {
// 如果不相等,直接返回false
return false;
}
i++; j--;
}
// 如果整个字符串都比较完之后,没有返回false,说明是回文,返回true
return true;
}
代码说明
该函数首先去除字符串中的空格和标点符号(使用正则表达式)。接着将字符串转换为小写,使其更容易进行比较。
然后初始化两个指针,分别指向字符串的开头和结尾。在while循环中,每次比较两个指针指向的字符是否相等,如果不相等就直接返回false。
如果整个字符串都比较完之后,没有返回false,那么说明字符串是回文,返回true。
测试代码
下面是一个简单的测试代码,用于测试上面的isPalindrome函数是否正确。
public static void main(String[] args) {
String str1 = "A man, a plan, a canal, Panama!";
String str2 = "level";
String str3 = "Java";
System.out.println(isPalindrome(str1)); // true
System.out.println(isPalindrome(str2)); // true
System.out.println(isPalindrome(str3)); // false
}
输出结果:
true
true
false
总结
本文介绍了在Java中编写一个函数,用于判断一个字符串是否为回文。该函数的实现利用了双指针的思想,代码比较简洁易懂。在实际的应用中,该函数可以用于判断用户输入的字符串是否为回文,还可以用于一些文本处理的场景中。
