0
点赞
收藏
分享

微信扫一扫

力扣刷题 DAY_30 栈与队列

纽二 2022-03-11 阅读 68

Leetcode1047

链接:力扣 

题目:

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

  • 1 <= S.length <= 20000
  • S 仅由小写英文字母组成。

示例:

思路: 

使用栈即可。把字符串顺序放到一个栈中,然后如果相同的话栈就弹出,这样最后栈里剩下的元素都是相邻不相同的元素了。

参考代码:

class Solution {
public:
    string removeDuplicates(string s) {
        stack<char> st;
        for (int i = 0; i < s.size(); i++) {
            if (st.empty() || s[i] != st.top()) {
                st.push(s[i]);
            }
            else {
                st.pop();
            }
        }
        string result = "";
        while (!st.empty()) {
            result += st.top();
            st.pop();
        }
        reverse(result.begin(), result.end());
        return result;
    }
};
举报

相关推荐

0 条评论