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

如何编写Java函数来检查字符串是否为回文

发布时间:2023-06-10 17:49:23

在本文中,我们将介绍一些编写Java函数来检查字符串是否为回文的方法。回文是一种特殊的字符串,无论是从左向右还是从右向左读取都是一样的,例如“level”、“radar”等字符串就是回文。

方法一:循环比较

该方法采用双指针的方式,从两端开始比较字符串是否相等,直到两个指针相遇或跨越中心位置。如果出现不相等的情况,说明该字符串不是回文。

示例代码:

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

该方法的时间复杂度为O(n),其中n为字符串的长度。

方法二:利用StringBuilder类

该方法利用StringBuilder类的reverse()方法,将字符串反转后与原字符串比较,如果相等则是回文。

示例代码:

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

该方法的时间复杂度同样为O(n)。

方法三:正则表达式

该方法利用正则表达式和String类的replace()方法去掉字符串中的非字母和数字的字符后,再与反转后的字符串进行比较,如果相等则是回文。

示例代码:

public boolean isPalindrome(String s) {
    String str = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
    String reverseStr = new StringBuilder(str).reverse().toString();
    return str.equals(reverseStr);
}

该方法的时间复杂度同样为O(n)。

综上所述,以上三种方法均可用于编写Java函数来检查字符串是否为回文。其中,方法一和方法二更为常用,具有较高的执行效率和可读性,适合多种场合使用。