0
点赞
收藏
分享

微信扫一扫

力扣:1047. 删除字符串中的所有相邻重复项

言午栩 2022-02-18 阅读 33

力扣:1047. 删除字符串中的所有相邻重复项
代码随想录
题目:
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

思路:
用栈进行操作。
两种情况
①:栈为空:添加元素入栈。
②:栈不为空:当前字母与栈顶相同则删除,不同当前元素入栈。
代码:

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

相关推荐

0 条评论