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

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

发布时间:2023-05-24 04:07:56

一、回文串的定义

回文串,即正反读都相同的字符串,例如“level”、“noon”、“racecar”等。

二、判断方法

1. 方法一:利用StringBuilder的reverse()方法

Java中的StringBuilder类有一个reverse()方法,可以将字符串反转,我们只需要将原字符串和反转后的字符串进行比较即可。

代码如下:

public static boolean isPalindrome(String str) {
    StringBuilder sb = new StringBuilder(str);
    String reversedStr = sb.reverse().toString();
    return str.equals(reversedStr);
}

2. 方法二:利用双指针法

双指针法是一种常见的字符串操作方法,我们可以用双指针法判断给定的字符串是否为回文串。

具体做法如下:

- 定义两个指针i和j,分别指向字符串的首尾。

- 如果s[i]等于s[j],那么指针向中间移动;否则,直接返回false。

- 如果指针相遇或者交错,说明字符串是回文串。

代码如下:

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

注:charAt()方法用于返回指定位置的字符。

三、测试代码

public static void main(String[] args) {
    System.out.println(isPalindrome("level")); // true
    System.out.println(isPalindrome("hello")); // false
    System.out.println(isPalindrome("A man a plan a canal Panama")); // true
}

四、总结

本文介绍了两种判断给定字符串是否为回文串的方法,分别是利用StringBuilder的reverse()方法和双指针法。这两种方法的时间复杂度都是O(n),其中n为字符串的长度。在实际开发中,可以根据不同的需求选择不同的方法。