给出一个字符串 s(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
注意,您的结果中 不应 包含任何括号。
示例 1:
输入:s = "(abcd)"
输出:"dcba"
示例 2:
输入:s = "(u(love)i)"
输出:"iloveu"
方法一:模拟遍历(栈的使用,把(之前的字符串放到栈里面,同时用一个字符串来记录(这后面的东西遇到)就翻转之前的字符串,翻转完前面要加上之前的栈保存的(前的东西)
class Solution {
public:
string reverseParentheses(string s) {
stack<string>stk;
string str = "";
for(auto c : s)
{
if(c == '(')
{
stk.push(str);
str = "";
}else if(c == ')')
{
reverse(str.begin(),str.end());
str = stk.top() + str;
stk.pop();
}else{
str += c;
}
}
return str;
}
};