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

使用Java编写一个判断字符串是否为回文的函数

发布时间:2023-08-01 16:40:43

下面是一个Java编写的判断字符串是否为回文的函数。

public class PalindromeChecker {
    
    public static boolean isPalindrome(String str) {
        // 忽略字符串中的非字母和非数字字符,并将字母转换为小写
        String processedStr = str.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
        
        // 使用双指针方法判断字符串是否为回文
        int left = 0;
        int right = processedStr.length() - 1;
        while (left < right) {
            if (processedStr.charAt(left) != processedStr.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        
        return true;
    }
    
    public static void main(String[] args) {
        String str1 = "A man, a plan, a canal, Panama!";
        System.out.println(isPalindrome(str1)); // 输出:true
        
        String str2 = "race car";
        System.out.println(isPalindrome(str2)); // 输出:true
        
        String str3 = "Hello World";
        System.out.println(isPalindrome(str3)); // 输出:false
    }
}

以上代码中的isPalindrome函数首先对输入的字符串进行处理,将非字母和非数字字符去除,并将字母转换为小写。然后使用双指针方法判断处理后的字符串是否为回文,即从字符串的两端开始向中间遍历,如果发现不相等的字符,则说明字符串不是回文,返回false。如果遍历结束时没有发现不相等的字符,则说明字符串是回文,返回true

main函数中,我们使用了几个不同的字符串作为测试案例,分别输出判断结果。例如,对于字符串"A man, a plan, a canal, Panama!",去除非字母和非数字字符后的字符串为"amanaplanacanalpanama",它是一个回文字符串,因此isPalindrome函数会返回true