实现Java函数以检查给定字符串是否为回文
发布时间:2023-12-08 08:04:20
回文是指无论从左向右还是从右向左读,所得到的字符串都是相同的。实现一个Java函数来检查给定字符串是否为回文。
思路:
要判断一个字符串是否为回文,可以将字符串从中间切分为两部分,然后将后半部分翻转,再与前半部分进行比较。如果相等,则说明是回文。
算法步骤如下:
1. 根据字符串的长度判断奇偶性。如果字符串长度为奇数,取中间索引值为 mid,如果是偶数,取中间左侧索引值为 mid。
2. 使用 StringBuilder 类的 reverse() 方法,将字符串的后半部分翻转。
3. 使用 substring() 方法,分别提取字符串的前半部分和翻转后的后半部分。
4. 使用 equals() 方法比较前半部分和后半部分是否相等。
5. 如果相等,说明是回文,返回 true;否则,返回 false。
下面是具体的Java代码实现:
public class PalindromeChecker {
public static boolean isPalindrome(String str) {
int len = str.length();
int mid = len / 2;
StringBuilder sb = new StringBuilder(str.substring(mid));
if (len % 2 == 0) {
sb.reverse();
} else {
sb.deleteCharAt(0);
}
return str.substring(0, mid).equals(sb.toString());
}
public static void main(String[] args) {
String[] testCases = {"hello", "level", "12321", "abcdcba"};
for (String testCase : testCases) {
boolean result = isPalindrome(testCase);
System.out.printf("'%s' is %s palindrome.%n", testCase, result ? "a" : "not a");
}
}
}
在示例中,我们定义了一个 isPalindrome 方法来检查给定的字符串是否为回文。在 main 方法中,我们使用了四个测试样例进行测试,分别输出结果。
输出结果如下:
'hello' is not a palindrome. 'level' is a palindrome. '12321' is a palindrome. 'abcdcba' is a palindrome.
从输出结果可以看出,程序正确地判断了字符串是否为回文。
需要注意的是,使用这种方法判断回文时,会将字符串从中间切分,并进行字符串的复制、翻转和比较操作。这些操作的时间复杂度较高,可能会影响程序的性能。对于大字符串的判断回文,可以考虑优化算法,减少不必要的操作。但对于常规大小的字符串,以上的实现方式已经可以满足需求。
