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

写一个Java函数来判断一个字符串是否为回文字符串

发布时间:2023-07-30 13:05:49

回文字符串是指从左到右和从右到左读取都一样的字符串。我们可以使用两个指针,一个指向字符串的开头,一个指向字符串的结尾,逐个比较字符是否相同,直到两个指针相遇或者找到不相同的字符为止。

下面是一个简单的Java函数来判断一个字符串是否为回文字符串:

public boolean isPalindrome(String s) {
    // 删除字符串中的非字母和数字字符,并转为小写
    String cleanedString = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
    
    // 初始化指针
    int left = 0;
    int right = cleanedString.length() - 1;
    
    // 逐个比较字符
    while (left < right) {
        if (cleanedString.charAt(left) != cleanedString.charAt(right)) {
            return false;
        }
        left++;
        right--;
    }
    
    return true;
}

该函数首先删除字符串中的非字母和数字字符,并将字符串转为小写,以便于比较。然后,使用两个指针分别指向字符串的开头和结尾,逐个比较字符是否相同。如果找到不相同的字符,则返回false;如果两个指针相遇,说明整个字符串都是回文的,返回true。

下面是一些测试样例:

public static void main(String[] args) {
    String s1 = "A man, a plan, a canal, Panama!";
    String s2 = "race a car";
    String s3 = "Able  was I saw Elba";
    
    System.out.println(isPalindrome(s1)); // true
    System.out.println(isPalindrome(s2)); // false
    System.out.println(isPalindrome(s3)); // true
}

输出结果:

true
false
true

这个函数的时间复杂度是O(n),其中n是字符串的长度。