难度中等151
给出一个字符串 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
中只有小写英文字母和括号- 我们确保所有括号都是成对出现的
c++直接利用string查找api找到最内层“()”内部翻转后删除这对括号,不断循环直至没有括号即可
代码:
class Solution {
public:
string reverseParentheses(string s) {
while(s.find_last_of('(')!=-1){
int n=s.find_last_of('(');//最内层括号
int m=s.find(')',n);
reverse(s.begin()+n+1,s.begin()+m);//反转括号内
s.erase(n,1);s.erase(m-1,1);//删除m、n下标处的()
//注意删除n后 m会变成m-1
}
return s;
}
};