如何解决1D Candy Crush如何删除大于 3 的连续相同序列?
编辑:已更新我的解决方案
提示:编写一个函数来在一维板上粉碎糖果。在糖果粉碎游戏中,从棋盘上移除一组相似的物品。在这个问题中,任何包含 3 个或更多相似项的序列都应该被移除,并且任何与该序列相邻的项现在都应该被视为彼此相邻。
输入:“aaaabbbc”
输出:"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 举报,一经查实,本站将立刻删除。