微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

1D Candy Crush如何删除大于 3 的连续相同序列?

如何解决1D Candy Crush如何删除大于 3 的连续相同序列?

编辑:已更新我的解决方

提示:编写一个函数来在一维板上粉碎糖果。在糖果粉碎游戏中,从棋盘上移除一组相似的物品。在这个问题中,任何包含 3 个或更多相似项的序列都应该被移除,并且任何与该序列相邻的项现在都应该被视为彼此相邻。

输入:“aaaabbbc”

输出:"c"

说明:

  1. 删除 3 'a': "aaaabbbbc" => "bbbbc"
  2. 删除 4 'b': "bbbbc" => "c"

目前的解决方案:

const crush = (s) => {
    let stack = [];
    let res = '';

    for (let i = 0; i < s.length; i++) {
        let top = stack[stack.length - 1];
        
        if (stack.length && s[i] !== top[0] && top[1] >= 3) { 
            stack.pop();
            top = stack[stack.length - 1]; 
        } 
        
        if (stack.length && s[i] === top[0]) { 
            top[1]++;
            if (top[1] >= 3 && (i === s.length - 1)) stack.pop();
        }
        
        else stack.push([s[i],1]);
    }
    for (let cur of stack) res += cur[0].repeat(cur[1])

    return res;
}

有人可以建议我需要做什么来删除长度超过 3 的连续字母块吗?

我基本上已经解决了这个问题,但是如果我在函数中输入 'aaaab',它会返回 'ab'....

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。