优化网站规模,美味的树莓派wordpress,wordpress 自定义post,导航网站超链接如何做https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/
给出由小写字母组成的字符串 S#xff0c;重复项删除操作会选择两个相邻且相同的字母#xff0c;并删除它们。
在 S 上反复执行重复项删除操作#xff0c;直到无法继续删除。
在完成所有重复…https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/
给出由小写字母组成的字符串 S重复项删除操作会选择两个相邻且相同的字母并删除它们。
在 S 上反复执行重复项删除操作直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例
输入abbaca 输出ca 解释 例如在 abbaca 中我们可以删除 bb 由于两字母相邻且相同这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 aaca其中又只有 aa 可以执行重复项删除操作所以最后的字符串为 ca。
提示
1 S.length 20000 S 仅由小写英文字母组成。 解题报告
根据不同操作序列得到结果的等价性我们可以找到一对就操作一次这样可以保证所有能消除的也都会被消除。
AC代码
class Solution {
public:string removeDuplicates(string S) {string ret ;stackchar sk;for(int i 0; iS.length(); i) {if(sk.size() S[i] sk.top()) sk.pop();else sk.push(S[i]);}while(sk.size()) {retsk.top();sk.pop();}reverse(ret.begin(), ret.end());return ret;}
};