2038. 如果相邻两个颜色均相同则删除当前颜色
本题突破口在于不能删除两端的字母,意思就是A和B排列会在院序列中稳定,删除不会形成新的可删除的序列。比较删除次数即可。
class Solution {
public:
bool winnerOfGame(string colors) {
int n = colors.size();
int cnt = 0;
for (int i = 1; i < n - 1; i ++ ) {
if (colors[i] == 'A' && colors[i - 1] == 'A' && colors[i + 1] == 'A') cnt ++ ;
else if (colors[i] == 'B' && colors[i - 1] == 'B' && colors[i + 1] == 'B') cnt -- ;
}
return cnt > 0;
}
};
这篇博客讨论了一个字符串删除游戏的算法实现,其中玩家根据特定规则删除颜色相同的相邻字母。文章指出关键在于不能删除两端的字母,并提供了一个C++代码示例,计算可以增加'A'的删除次数与减少'B'的删除次数,最后判断是否能赢得游戏。

8万+

被折叠的 条评论
为什么被折叠?



