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

用Java编写一种函数来检查一个字符串是否为回文。

发布时间:2023-06-25 13:35:41

回文字符串是指从左到右读和从右到左读都一样的字符串。例如,"racecar" 和 "level" 都是回文字符串。

编写一个 Java 函数来检查一个字符串是否为回文。可以使用两种不同的算法来实现此功能:迭代算法和递归算法。

迭代算法:

可以使用两个指针来比较字符串中的字符。一个指针从字符串的左边开始,另一个指针从右边开始。每次比较两个字符,如果它们相等,则继续向中间移动两个指针。如果它们不相等,则字符串不是回文。

以下是一个实现迭代算法的示例函数:

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;
}

递归算法:

递归算法的基本思想是将字符串分解为两个子字符串,并将子字符串的结果组合起来。递归终止条件是当字符串长度小于或等于1时,字符串为回文。

以下是一个实现递归算法的示例函数:

public static boolean isPalindrome(String str) {
    if (str.length() <= 1) {
        return true;
    }

    if (str.charAt(0) != str.charAt(str.length() - 1)) {
        return false;
    }

    return isPalindrome(str.substring(1, str.length() - 1));
}

测试代码:

public static void main(String[] args) {
    String str1 = "racecar";
    String str2 = "level";
    String str3 = "hello";
    String str4 = "";

    System.out.println(str1 + " is palindrome: " + isPalindrome(str1));
    System.out.println(str2 + " is palindrome: " + isPalindrome(str2));
    System.out.println(str3 + " is palindrome: " + isPalindrome(str3));
    System.out.println(str4 + " is palindrome: " + isPalindrome(str4));
}

运行结果:

racecar is palindrome: true
level is palindrome: true
hello is palindrome: false
 is palindrome: true

总结:

无论使用迭代算法还是递归算法,实现一个函数来检查字符串是否为回文都是比较简单的。在实际应用中,可以考虑使用迭代算法来实现,因为它通常具有更好的性能。如果需要递归实现,需要注意递归深度的问题。