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

创建Java函数来检查一个字符串是否为回文

发布时间:2023-05-30 19:20:47

回文指的是正反序都是相同的一个字符串。例如,“level”、“racecar”和“madam”都是回文。本文将介绍如何创建Java函数来检查一个字符串是否为回文。

在Java中,可以使用StringBuilder类来反转字符串。以下是一个简单的函数来检查一个字符串是否为回文:

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

该函数首先创建一个StringBuilder对象,初始值为输入字符串的反转结果。然后,将反转的字符串转换回原始形式并将其与输入字符串进行比较。如果它们相等,则该函数将返回true,否则返回false。

以下是一个示例使用该函数来检查字符串是否为回文:

public static void main(String[] args) {
    String str1 = "level";
    String str2 = "hello";
    
    if (isPalindrome(str1)) {
        System.out.println(str1 + " is a palindrome.");
    } else {
        System.out.println(str1 + " is not a palindrome.");
    }
    
    if (isPalindrome(str2)) {
        System.out.println(str2 + " is a palindrome.");
    } else {
        System.out.println(str2 + " is not a palindrome.");
    }
}

以上代码将输出以下结果:

level is a palindrome.
hello is not a palindrome.

该函数实现简单,但是对于长字符串或需要高性能的情况可能不够高效。以下是另一种方法,使用两个指针在字符串的开头和结尾移动,并比较它们所指向的字符是否相同:

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

该函数首先初始化两个指针,一个指向字符串的开头,另一个指向字符串的结尾。然后,它将循环执行以下操作:比较left指针和right指针所指向的字符。如果它们不相等,则该函数将返回false。否则,left指针将向后移动,right指针将向前移动。

如果left指针和right指针在任何时候相等,则该函数将返回true。这是由于在这种情况下,中心字符是回文本身。

以下是一个示例使用该函数来检查字符串是否为回文:

public static void main(String[] args) {
    String str1 = "level";
    String str2 = "hello";
    
    if (isPalindrome(str1)) {
        System.out.println(str1 + " is a palindrome.");
    } else {
        System.out.println(str1 + " is not a palindrome.");
    }
    
    if (isPalindrome(str2)) {
        System.out.println(str2 + " is a palindrome.");
    } else {
        System.out.println(str2 + " is not a palindrome.");
    }
}

以上代码将输出以下结果:

level is a palindrome.
hello is not a palindrome.

在实现时,需要注意字符串大小写。例如,如果要在不区分大小写的情况下检查一个字符串是否为回文,可以将字符串转换为小写(或大写):

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

这使得字符串“Madam”和“madam”被认为是回文。