给出一个字符串 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 中只有小写英文字母和括号
我们确保所有括号都是成对出现的

class Solution { public: string reverseParentheses(string s) { stack<int> sta;
for(int i=0;i<s.size();i++) { char c=s[i]; if(c=='(') sta.push(i); else
if(c==')') { int w=sta.top(); sta.pop(); reverse(s.begin()+w+1,s.begin()+i); }
} auto x=s.begin(),y=s.end(); while(x!=y) { if(*x=='('||*x==')') s.erase(x);
else x++; } return s; } };
分为两步:利用栈的特点,先找出字符串最里面括号内容并反转,再找出次里面的反转,直到没有括号。
再利用迭代器寻找括号并删除

技术
©2019-2020 Toolsou All rights reserved,
车主无忧:为什么放弃开源Kafka?必传之作!Alibaba内部出品Redis深度笔记及源码宝典统信UOS首次公布软件适配:QQ、微信、迅雷都有了阿里开发10年技术核心总结,Springboot+Redis文档,送给努力上进的程序员python画爱心Docker容器数据卷详解(共享数据)为何华为的5G专利高居第一名,却还被高通要求缴纳专利费?Spring循环依赖三级缓存是否可以减少为二级缓存?C#中字典的排序方法面试还不会Spring?阿里P8总结的100道面试解析,让你实锤面试官