leetcode 1190. 反转每对括号间的子串 中等
给出一个字符串s仅含有小写英文字母和括号。请你按照从括号内到外的顺序逐层反转每对匹配括号中的字符串并返回最终的结果。注意您的结果中不应包含任何括号。示例 1输入s (abcd)输出dcba示例 2输入s (u(love)i)输出iloveu解释先反转子字符串 love 然后反转整个字符串。示例 3输入s (ed(et(oc))el)输出leetcode解释先反转子字符串 oc 接着反转 etco 然后反转整个字符串。提示1 s.length 2000s中只有小写英文字母和括号题目测试用例确保所有括号都是成对出现的分析从左到右遍历该字符串使用字符串 str 记录当前层所遍历到的小写英文字母。对于当前遍历的字符如果是左括号将 str 插入到栈中并将 str 置为空进入下一层如果是右括号则说明遍历完了当前层需要将 str 反转返回给上一层。做法上将栈顶字符串弹出然后将反转后的 str 拼接到栈顶字符串末尾将结果赋值给 str如果是小写英文字母将其加到 str 末尾。注意仅在遇到右括号时才进行字符串处理这样可以保证是按照从括号内到外的顺序处理字符串。class Solution { public: string reverseParentheses(string s) { stackcharsta; for(int i0;s[i];i) { if(s[i])) { string temp; while(!sta.empty()) { char ccsta.top();sta.pop(); if(cc()break; else tempcc; } for(int j0;temp[j];j) sta.push(temp[j]); } else sta.push(s[i]); } string ans; while(!sta.empty()) { char ccsta.top();sta.pop(); if(cc()break; else anscc; } for(int i0,jans.length()-1;ij;i,--j) swap(ans[i],ans[j]); return ans; } };