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

使用Java函数实现判断一个字符串是否为回文字符串

发布时间:2023-05-26 03:53:45

回文字符串是指正读和反读都相同的字符串。比如“level”和“noon”就是回文字符串。在程序中,判断一个字符串是否为回文字符串是经常需要用到的操作。使用Java函数可以方便地实现这个功能。

常规方法

最常用的判断回文字符串的方法是比较字符串是否与它的翻转结果相同。例如,

public static boolean isPalindrome(String s){
    String reversed = new StringBuilder(s).reverse().toString();    // 将字符串翻转
    return s.equals(reversed);    // 比较原字符串和翻转后的字符串是否相等
}

这个方法利用StringBuilder中的reverse()函数将字符串翻转,并使用equals()函数比较原字符串和翻转后的字符串是否相等。

这种方法的缺点是需要创建一个新的StringBuilder对象来翻转字符串,这可能会增加内存消耗。

逐位比较方法

还有一种方法是通过逐位比较字符串的 个字符和最后一个字符,第二个字符和倒数第二个字符,以此类推,如果逐一比较两个字符不同,则非回文字符串。例如,

public static boolean isPalindrome(String s){
    for (int i = 0; i < s.length() / 2; i++) {    // 仅需比较一半长度的字符
        if (s.charAt(i) != s.charAt(s.length() - 1 - i))    // 如果字符不对应,则非回文字符串
            return false;
    }
    return true;
}

这种方法不需要额外创建翻转后的字符串,因此内存消耗少。

代码实现:

public class Palindrome{

public static boolean isPalindrome(String s){

if (s == null) // 如果输入为null,则不是回文字符串

return false;

for (int i = 0; i < s.length() / 2; i++) { // 仅需比较一半长度的字符

if (s.charAt(i) != s.charAt(s.length() - 1 - i)) // 如果字符不对应,则非回文字符串

return false;

}

return true;

}

}

在代码中,首先判断输入的字符串是否为null。然后使用逐位比较的方法来判断字符串是否为回文字符串。

测试用例如下:

public static void main(String[] args) {

String s1 = "level";

String s2 = "noon";

String s3 = "hello";

String s4 = null;

System.out.println(Palindrome.isPalindrome(s1)); // true

System.out.println(Palindrome.isPalindrome(s2)); // true

System.out.println(Palindrome.isPalindrome(s3)); // false

System.out.println(Palindrome.isPalindrome(s4)); // false

}

输出结果为:

true

true

false

false

结论

判断一个字符串是否为回文字符串,可以使用逐位比较的方法,也可以使用翻转字符串的方法。这两种方法各有优劣,可以根据具体情况选择使用。逐位比较的方法适用于字符串比较长的情况,可以减少内存消耗。翻转字符串的方法适用于字符串比较短的情况,代码简洁易懂。无论使用哪种方法,我们都可以在Java中方便地实现判断回文字符串的功能。