主要思路
逐层翻转,并将翻转结果链入栈尾,重复此操作。
遍历字符串,左括号或者字母则直接入栈,遇到右括号,循环弹出栈顶元素直至遇到左括号,弹出的栈顶元素加入到队列中,最后将队列中的元素在重新插入到栈中,其实就是完成某一子串的翻转,用reverse也行,就不用队列了。最后栈中即为最终结果。
class Solution {
public:
string reverseParentheses(string s) {
int len = s.length(),t;
string stk;
queue<char> aux_que;//辅助队列
for(int i = 0;i<len;++i) {
if(s[i] == ')') {
while(stk.back()!='(') {
t = stk.back();
stk.pop_back();
aux_que.push(t);
}
stk.pop_back();//删除'('
while(!aux_que.empty()) {
stk.push_back(aux_que.front());
aux_que.pop();
}
}
else {
stk.push_back(s[i]);
}
}
return stk;
}
};