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

实现Java函数来判断字符串是否是回文

发布时间:2023-06-21 01:51:37

回文指的是正着读和倒着读都一样的字符串,例如“level”,“racecar”等。本文将介绍如何用Java实现一个函数来判断字符串是否是回文。

一、方法一:反转字符串

种方法是将字符串反转,如果反转后的字符串和原字符串相同,则原字符串是回文。反转字符串可以用StringBuilder的reverse()方法,也可以手动实现一个反转函数。下面是代码示例:

public static boolean isPalindrome(String str) {

    StringBuilder sb = new StringBuilder(str);

    return sb.reverse().toString().equals(str);

}

上述代码首先使用StringBuilder类将字符串反转,然后将反转后的字符串和原字符串进行比较。如果两个字符串相同,则返回true,否则返回false。

二、方法二:逐位比较

第二种方法是逐位比较字符串的每一位字符。可以定义两个指针,一个指向字符串的开头,一个指向字符串的结尾,然后逐步向中间移动。每次比较两个指针指向的字符是否相同,如果不同则返回false,如果全部比较完之后都相同,则返回true。下面是代码示例:

public static boolean isPalindrome(String str) {

    int i = 0, j = str.length() - 1;

    while (i < j) {

        if (str.charAt(i) != str.charAt(j)) {

            return false;

        }

        i++;

        j--;

    }

    return true;

}

上述代码定义了两个指针i和j,初始值分别为0和字符串的长度减1。然后使用while循环逐步比较两个指针指向的字符是否相同。如果相同则继续移动指针,如果不同则返回false。最后如果全部比较完毕后都相同,则返回true。

三、代码测试

下面是一个完整的测试代码,用于测试上述两个函数的准确性。

public class TestPalindrome {

    public static void main(String[] args) {

        String str1 = "level";

        String str2 = "racecar";

        String str3 = "hello";

        System.out.println(isPalindrome(str1)); // true

        System.out.println(isPalindrome(str2)); // true

        System.out.println(isPalindrome(str3)); // false

    }

    public static boolean isPalindrome(String str) {

        StringBuilder sb = new StringBuilder(str);

        return sb.reverse().toString().equals(str);

    }

    public static boolean isPalindrome2(String str) {

        int i = 0, j = str.length() - 1;

        while (i < j) {

            if (str.charAt(i) != str.charAt(j)) {

                return false;

            }

            i++;

            j--;

        }

        return true;

    }

}

运行测试代码可以看到输出结果为true,true,false,说明两个函数都能够准确判断字符串是否是回文。

四、总结

本文介绍了两种实现Java函数来判断字符串是否是回文的方法,一种是反转字符串,另一种是逐位比较。两种方法各有优缺点,需要根据实际情况选择。在实际开发中,建议使用效率高、代码简洁的方法,例如逐位比较。