0
点赞
收藏
分享

微信扫一扫

LeetCode_1047 删除字符串中的所有相邻重复项(栈)

就是耍帅 2022-03-21 阅读 55
java后端

1、题目:删除字符串中的所有相邻重复项

2、解题思路

思路很明显就是使用栈来进行删除,将字符一个一个放入栈中,如果是相同的话就弹出,直到最后就可以剩下来相邻元素不相同的元素。

本题更加巧妙的点在于可以用字符来替代栈,直接对字符进行操作,就不需要先建立一个栈,然后将栈中的字符导入回字符串。

3、代码

class Solution 
{
public:
    string removeDuplicates(string S) 
    {
        stack<char> st;
        for (char s : S) {
            if (st.empty() || s != st.top()) 
            {
                st.push(s);
            } 
            else 
            {
                st.pop(); // s 与 st.top()相等的情况
            }
        }
        string result = "";
        while (!st.empty()) 
        { // 将栈中元素放到result字符串汇总
            result += st.top();
            st.pop();
        }
        reverse (result.begin(), result.end()); // 此时字符串需要反转一下
        return result;
    }
};

class Solution 
{
public:
    string removeDuplicates(string S) 
    {
        string result;
        for(char s : S) {
            if(result.empty() || result.back() != s) 
            {
                result.push_back(s);
            }
            else 
            {
                result.pop_back();
            }
        }
        return result;
    }
};
举报

相关推荐

0 条评论