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

给定字符串最长回文子串Java实现异常:输出不符问题排查

最长回文子串实现问题修复

原代码核心问题

  • 回文判断逻辑错误:isPalindrome方法中sum初始值为带空格的" ",导致反转后的字符串自带前缀空格,永远无法与原串匹配,所有回文判断均失效。
  • 子串遍历遗漏:外层循环i < s.length()-1跳过了最后一个字符作为单个子串的场景,当字符串无长度≥2的回文时,本应返回单个字符,原代码却返回null,不符合题目要求。
  • 选择排序实现错误:使用list.add进行元素交换会导致列表元素数量翻倍,排序逻辑完全失效,正确做法是用list.set替换元素位置。
  • 边界场景处理不当:输入长度为1的字符串或空串时,原代码返回null,违反题目中单个字符为回文、空串返回空串的要求。

修正后的代码

class Solution {

    public boolean isPalindrome(String check) {
        // 用StringBuilder优化字符串拼接性能
        StringBuilder reversed = new StringBuilder();
        for (int i = check.length() - 1; i >= 0; i--) {
            reversed.append(check.charAt(i));
        }
        // 严格匹配原串(若题目不区分大小写可改为equalsIgnoreCase)
        return reversed.toString().equals(check);
    }

    public String longestPalindrome(String s) {
        ArrayList<String> palindromes = new ArrayList<>();
        
        // 遍历所有可能的子串,包含单个字符的情况
        for (int i = 0; i < s.length(); i++) {
            for (int j = i; j < s.length(); j++) {
                String subStr = s.substring(i, j + 1);
                if (isPalindrome(subStr)) {
                    palindromes.add(subStr);
                }
            }
        }

        // 选择排序:按子串长度从小到大排序
        for (int i = 0; i < palindromes.size() - 1; i++) {
            int minLenIndex = i;
            for (int j = i + 1; j < palindromes.size(); j++) {
                if (palindromes.get(j).length() < palindromes.get(minLenIndex).length()) {
                    minLenIndex = j;
                }
            }
            // 正确交换两个位置的元素
            String temp = palindromes.get(i);
            palindromes.set(i, palindromes.get(minLenIndex));
            palindromes.set(minLenIndex, temp);
        }

        // 处理空输入,返回空串而非null;否则返回最长的子串
        return palindromes.isEmpty() ? "" : palindromes.get(palindromes.size() - 1);
    }
}

优化说明

  • 用StringBuilder替代字符串拼接,避免频繁创建字符串对象,提升运行效率。
  • 修正了回文判断的初始值错误,确保反转后的字符串与原串完全匹配。
  • 补全了子串遍历的所有场景,包含单个字符的回文。
  • 修复了选择排序的交换逻辑,确保排序正常工作。
  • 完善了边界场景处理,符合题目对空串、单字符输入的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:10:41