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

Java函数使用示例:如何检查字符串是否为回文字符串?

发布时间:2023-07-04 09:19:01

回文字符串是指正读和反读都相同的字符串,比如"level"、"radar"等。在Java中,可以使用以下函数来检查字符串是否为回文字符串:

public static boolean isPalindrome(String str) {
    // 将字符串转换为小写,并去除空格和标点符号
    str = str.toLowerCase().replaceAll("[^a-z0-9]", "");
    
    // 使用双指针判断正读和反读字符是否相同
    int left = 0;
    int right = str.length() - 1;
    while (left < right) {
        if (str.charAt(left) != str.charAt(right)) {
            return false;
        }
        left++;
        right--;
    }
    
    return true;
}

上述代码中,首先将字符串转换为小写的形式,并且去除空格和标点符号。这样做是为了忽略大小写和标点对判断的干扰。接下来,使用双指针方法来判断正读和反读字符是否相同。如果发现不相同的字符,则返回false。如果全部字符比较完毕后都未发现不相同的字符,则返回true,表示该字符串为回文字符串。

下面是一个使用示例:

public class Main {
    public static void main(String[] args) {
        String str = "level";
        boolean result = isPalindrome(str);
        if (result) {
            System.out.println(str + " is a palindrome.");
        } else {
            System.out.println(str + " is not a palindrome.");
        }
    }
    
    public static boolean isPalindrome(String str) {
        // 将字符串转换为小写,并去除空格和标点符号
        str = str.toLowerCase().replaceAll("[^a-z0-9]", "");

        // 使用双指针判断正读和反读字符是否相同
        int left = 0;
        int right = str.length() - 1;
        while (left < right) {
            if (str.charAt(left) != str.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }

        return true;
    }
}

运行上述示例代码,输出结果为:

level is a palindrome.

可以看到,输出结果提示"level is a palindrome.",说明该字符串"level"确实是一个回文字符串。

需要注意的是,上述代码只考虑了字母和数字的回文字符串判断,而忽略了其他字符,比如空格和标点符号。如果需要考虑全部字符的回文字符串判断,可以修改正则表达式[^a-z0-9],使其匹配其他字符。