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

Java中编写一个函数,用于判断一个字符串是否为回文

发布时间:2023-06-13 15:10:31

回文是指正着读和反着读都一样的字符串,如“level”,“racecar”等。在Java中,可以编写一个函数来判断一个字符串是否是回文。

代码实现

函数名:isPalindrome

参数:一个字符串str

返回值:一个布尔值,表示是否是回文

代码如下:

public static boolean isPalindrome(String str) {

    // 去除字符串中的空格和标点符号

    str = str.replaceAll("[\\s\\p{Punct}]", "");

    // 将字符串转换为小写,便于比较

    str = str.toLowerCase();

    // 初始化两个指针,分别指向字符串的开头和结尾

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

    // 依次比较两个指针指向的字符是否相等

    while (i < j) {

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

            // 如果不相等,直接返回false

            return false;

        }

        i++; j--;

    }

    // 如果整个字符串都比较完之后,没有返回false,说明是回文,返回true

    return true;

}

代码说明

该函数首先去除字符串中的空格和标点符号(使用正则表达式)。接着将字符串转换为小写,使其更容易进行比较。

然后初始化两个指针,分别指向字符串的开头和结尾。在while循环中,每次比较两个指针指向的字符是否相等,如果不相等就直接返回false。

如果整个字符串都比较完之后,没有返回false,那么说明字符串是回文,返回true。

测试代码

下面是一个简单的测试代码,用于测试上面的isPalindrome函数是否正确。

public static void main(String[] args) {

    String str1 = "A man, a plan, a canal, Panama!";

    String str2 = "level";

    String str3 = "Java";

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

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

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

}

输出结果:

true

true

false

总结

本文介绍了在Java中编写一个函数,用于判断一个字符串是否为回文。该函数的实现利用了双指针的思想,代码比较简洁易懂。在实际的应用中,该函数可以用于判断用户输入的字符串是否为回文,还可以用于一些文本处理的场景中。