给出一个字符串 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;
}
};