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

Java函数:如何判断一个字符串是不是回文串?

发布时间:2023-05-20 14:10:08

回文串是指从左往右和从右往左读都一样的字符串。比如"level"、"noon"、"dad"等都是回文串。

在Java中,判断一个字符串是否为回文串可以通过以下常规方法来实现:

1. 字符串反转

将原字符串反转并与原字符串进行对比,如果相同则为回文串。

public static boolean isPalindrome(String s) {
    return s.equals(new StringBuilder(s).reverse().toString());
}

2. 逐个字符对比

从字符串的两端开始,逐个对比字符是否相同,直到中间或找到不同的字符,如果到中间都相同,则为回文串。

public static boolean isPalindrome(String s) {
    int i = 0, j = s.length() - 1;
    while (i < j) {
        if (s.charAt(i) != s.charAt(j)) {
            return false;
        }
        i++;
        j--;
    }
    return true;
}

3. 递归判断

也可以使用递归的方法来判断一个字符串是否为回文串。递归时,将字符串的首尾字符对比,若相同则继续递归判断去掉首尾字符的子串是否为回文串,直到中间或出现不同的字符。

public static boolean isPalindrome(String s) {
    if (s.length() == 0 || s.length() == 1) {
        return true;
    }
    if (s.charAt(0) == s.charAt(s.length() - 1)) {
        return isPalindrome(s.substring(1, s.length() - 1));
    }
    return false;
}

以上是三种常规的判断字符串是否为回文串的方法,其中方法一和方法二的时间复杂度均为 O(n),而方法三的时间复杂度在最坏情况下为 O(n^2),因为递归调用时创建了许多子串,所以不建议使用第三种方法。