You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

判断字符串是否为回文的Java程序存在逻辑错误,请求修正

修正后的回文判断Java程序

你的代码存在两个关键问题,导致无法正确识别回文字符串:

  • char数组转字符串错误:直接调用C.toString()不会返回数组的字符内容,而是返回数组的内存地址格式字符串,必须用new String(C)来将char数组转换为对应的字符串。
  • 冗余空循环:代码里的for(int i=0; i<(C.length); i++){}完全没有作用,可直接删除。

修正后的完整代码

public class Palindrome {
    public String checkPal(String strr){
        char[] C = strr.toCharArray();
        int left=0;
        int right= C.length - 1;
        while(left < right){
            char t = C[left];
            C[left++] = C[right];
            C[right--] = t;
        }
        // 正确将char数组转为字符串
        String rev = new String(C);
        return rev;
    }
    public static void main(String[] args) {
        String S = "level";
        Palindrome p = new Palindrome();
        String R = p.checkPal(S);
        System.out.println(R);
        if(S.toLowerCase().equals(R.toLowerCase())){
            System.out.println("hey Pal :)");
        } else {
            System.out.println("Bye Pal :<");
        }
    }
}

更高效的优化方案(无需完整反转字符串)

判断回文不需要完全反转整个字符串,直接在原数组两端向中间对比字符,能节省内存且提升效率:

public class Palindrome {
    public boolean isPalindrome(String strr){
        char[] C = strr.toLowerCase().toCharArray();
        int left = 0;
        int right = C.length - 1;
        while(left < right){
            if(C[left] != C[right]){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    public static void main(String[] args) {
        String S = "level";
        Palindrome p = new Palindrome();
        if(p.isPalindrome(S)){
            System.out.println("hey Pal :)");
        } else {
            System.out.println("Bye Pal :<");
        }
    }
}

内容的提问来源于stack exchange,提问作者Dokwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:15:09