LeetCode 11 删除最外层的括号[栈] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 11 删除最外层的括号[栈] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。



解题思路:
一道非常简单的栈应用题,遇到左括号入栈,右括号出栈,栈空即找到一个原语的一部分,取出最外面两个括号加入到字符串中,代码如下:

class Solution 
public:
    string removeOuterParentheses(string s) 
        stack<char> st;
        string res;
        int i = 0;
        while(i < s.size()) 
            string temp;
            temp += s[i];
            st.emplace(s[i]);
            i ++;
            while(!st.empty()) 
                if(s[i] == ')') 
                    st.pop();
                 else 
                    st.emplace('(');
                
                temp += s[i];
                i ++;
            
            if(temp.size() == 2) continue;
            res += temp.substr(1, temp.size() - 2);
        
        return res;
    
;

简单优化如下:

class Solution 
public:
    string removeOuterParentheses(string s) 
        stack<char> st;
        string res;
        int i = 0;
        while(i < s.size()) 
            st.emplace(s[i]);
            i ++;
            while(!st.empty()) 
                if(s[i] == ')') 
                    st.pop();
                 else 
                    st.emplace('(');
                
                if(!st.empty()) 
                    res += s[i];
                
                i ++;
            
        
        return res;
    
;

以上是关于LeetCode 11 删除最外层的括号[栈] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 面试题 17.11. 单词距离 / 1021. 删除最外层的括号 / 468. 验证IP地址

LeetCode 1021.删除最外层的括号

1016.删除最外层的括号

LeetCode #1021. Remove Outermost Parentheses 删除最外层的括号

删除最外层的括号

算法1021. 删除最外层的括号(多语言实现)