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

Codility Disappearing Pairs问题:偶数长回文用例错误求助

Codility Disappearing Pairs问题求助

我在Codility平台完成Disappearing Pairs训练题,题目要求如下:
给定仅含A、B、C的字符串S,反复移除其中的"AA"、"BB"或"CC",直到无法操作,返回最终字符串。

我编写的Java代码仅得83分,在even_palindrome1(长偶数长度回文)用例上出错:输出非空字符串,但预期结果为空,不清楚错误原因,请求帮助。

我的代码:

public String solution(String S) {
    
    boolean notAA = false;
    boolean notBB = false;
    boolean notCC = false;

    while(S.length()==0 || true){
        if (S.contains("AA")){
            S = S.replace("AA", "");
        } else {
           notAA = true;
        }

        if(S.contains("BB")){
            S = S.replace("BB", "");
        } else {
            notBB = true;
        }

        if(S.contains("CC")){
            S = S.replace("CC", "");
        } else {
            notCC = true;
        }

        if(notAA && notBB && notCC){
            break;
        }
    }
    return S;
}

题目示例:

  • 输入"ACCAABBC",返回"AC"
  • 输入"ABCBBCBA",返回""
  • 输入"BABABA",返回"BABABA"

错误详情:even_palindrome1用例(长偶数长度回文),输出非空字符串,预期为空。


错误原因分析

你的代码逻辑存在两个关键问题:

  1. 标记变量未重置:每次循环中,notAA、notBB、notCC一旦设为true就不会重置。比如处理回文字符串"ABBA"时,第一次循环检查到无"AA",notAA=true;接着替换"BB"得到"AA",但此时notAA已经是true,循环直接终止,不会处理新生成的"AA",最终返回"AA"而非空。
  2. 替换逻辑不彻底:String.replace()会一次性替换所有当前存在的目标子串,但替换后可能产生新的相邻重复对,你的代码无法循环处理这些新产生的重复对,因为标记变量的状态会阻止后续检查。

正确解法(栈实现)

这类消除相邻重复元素的问题,最适合用栈结构处理,能彻底处理所有可能的连续消除场景:

public String solution(String S) {
    StringBuilder stack = new StringBuilder();
    for (char c : S.toCharArray()) {
        int stackLen = stack.length();
        // 如果栈不为空,且栈顶元素和当前字符相同,弹出栈顶(消除一对)
        if (stackLen > 0 && stack.charAt(stackLen - 1) == c) {
            stack.deleteCharAt(stackLen - 1);
        } else {
            // 否则将当前字符压入栈
            stack.append(c);
        }
    }
    return stack.toString();
}

思路说明:

遍历字符串的每个字符,维护一个栈(用StringBuilder模拟,效率更高):

  • 若栈不为空且栈顶字符与当前字符相同,说明遇到可消除的重复对,弹出栈顶元素;
  • 若不满足消除条件,将当前字符压入栈;
  • 遍历结束后,栈中剩余的字符就是无法再消除的最终结果。

这种方式能处理所有嵌套或连续生成的重复对,比如"ABBA"会被逐步消除为空,完美解决even_palindrome1用例的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:51:17