欢迎访问宙启技术站
智能推送

实现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.

从输出结果可以看出,程序正确地判断了字符串是否为回文。

需要注意的是,使用这种方法判断回文时,会将字符串从中间切分,并进行字符串的复制、翻转和比较操作。这些操作的时间复杂度较高,可能会影响程序的性能。对于大字符串的判断回文,可以考虑优化算法,减少不必要的操作。但对于常规大小的字符串,以上的实现方式已经可以满足需求。