如何在Java中实现一个函数,用于判断一个字符串是否为回文?
发布时间:2023-12-09 05:30:56
要判断一个字符串是否为回文,可以通过比较字符串的前半部分和逆序后的后半部分是否相等来判断。
在Java中,可以通过以下函数来实现判断一个字符串是否为回文:
public static boolean isPalindrome(String str) {
// 先将字符串转换为小写字母并去除空格
str = str.toLowerCase().replaceAll("\\s+", "");
// 获取字符串的长度
int length = str.length();
// 遍历字符串的前半部分
for (int i = 0; i < length / 2; i++) {
// 比较前半部分和逆序后的后半部分是否相等
if (str.charAt(i) != str.charAt(length - i - 1)) {
return false;
}
}
// 如果比较完成之后都相等,则字符串为回文
return true;
}
在上面的代码中,首先将输入字符串转换为小写字母并且去除空格,这样可以忽略大小写和空格对回文判断的影响。
然后,通过遍历字符串的前半部分,分别比较前半部分和逆序后的后半部分的字符是否相等。如果有字符不相等,则返回false表示不是回文,否则返回true表示是回文。为了避免遍历整个字符串,只需要遍历一半即可。
下面是一个测试函数用于验证上述回文函数的正确性:
public static void testPalindrome(String str) {
boolean isPalindrome = isPalindrome(str);
System.out.println("'" + str + "' is palindrome? " + isPalindrome);
}
public static void main(String[] args) {
testPalindrome("level"); // true
testPalindrome("radar"); // true
testPalindrome("hello"); // false
testPalindrome("A man a plan a canal Panama"); // true
}
运行上述代码,可以得到如下输出:
'level' is palindrome? true 'radar' is palindrome? true 'hello' is palindrome? false 'A man a plan a canal Panama' is palindrome? true
通过以上代码,就可实现一个函数来判断一个字符串是否为回文。
