1190. 反转每对括号间的子串 javascript
题目:
给出一个字符串 s(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
注意,您的结果中 不应 包含任何括号。
示例
输入:s = "(abcd)"
输出:"dcba"
输入:s = "(u(love)i)"
输出:"iloveu"
输入:s = "(ed(et(oc))el)"
输出:"leetcode"
输入:s = "a(bcdefghijkl(mno)p)q"
输出:"apmnolkjihgfedcbq"
思路
- 首先想到的就是利用 栈
- 先处理内层,处理完内层再依次处理外层
"(u(love)i)"
过程:
u ['u']
( ['u','']
l ['u','l']
o ['u','lo']
v ['u','lov']
e ['u','love']
) ['uevol']
i ['uevoli']
) 'iloveu'
代码
var reverseParentheses = function(s) {
let stack = ['']
for(let i=0;i<s.length;i++){
let ch = s[i]
if(ch === '('){
stack.push('')
}else if(ch === ')'){
let str = stack.pop()
let tmp = str.split('').reverse().join('')
stack[stack.length-1] += tmp
}else{
stack[stack.length-1] += ch
}
}
return stack.pop()
};
学艺不精,还需努力💪