Skip to content

Latest commit

 

History

History
95 lines (69 loc) · 2.44 KB

1190-reverse-substrings-between-each-pair-of-parentheses.md

File metadata and controls

95 lines (69 loc) · 2.44 KB

1190. Reverse Substrings Between Each Pair of Parentheses - 反转每对括号间的子串

给出一个字符串 s(仅含有小写英文字母和括号)。

请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。

注意,您的结果中 不应 包含任何括号。

 

示例 1:

输入:s = "(abcd)"
输出:"dcba"

示例 2:

输入:s = "(u(love)i)"
输出:"iloveu"

示例 3:

输入:s = "(ed(et(oc))el)"
输出:"leetcode"

示例 4:

输入:s = "a(bcdefghijkl(mno)p)q"
输出:"apmnolkjihgfedcbq"

 

提示:

  • 0 <= s.length <= 2000
  • s 中只有小写英文字母和括号
  • 我们确保所有括号都是成对出现的

题目标签:Stack

题目链接:LeetCode / LeetCode中国

题解

Language Runtime Memory
cpp 4 ms 9.4 MB
class Solution {
public:
    string reverseParentheses(string s) {
        stack<char> stk;
        for (char c : s) {
            if (c == '(') {
                stk.push(c);
            } else if (c == ')') {
                queue<char> tmp;
                while (stk.top() != '(') {
                    tmp.push(stk.top());
                    stk.pop();
                }
                stk.pop();
                while (!tmp.empty()) {
                    stk.push(tmp.front());
                    tmp.pop();
                }
            } else {
                stk.push(c);
            }
        }
        string ss;
        while (!stk.empty()) {
            ss += stk.top();
            stk.pop();
        }
        reverse(ss.begin(), ss.end());
        return ss;
    }
};