|
| 1 | + |
| 2 | +>仰望星空的人,不应该被嘲笑 |
| 3 | +
|
| 4 | +## 题目描述 |
| 5 | +给出一个字符串 `s`(仅含有小写英文字母和括号)。 |
| 6 | + |
| 7 | +请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。 |
| 8 | + |
| 9 | +注意,您的结果中 不应 包含任何括号。 |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +示例 1: |
| 14 | + |
| 15 | +```javascript |
| 16 | +输入:s = "(abcd)" |
| 17 | +输出:"dcba" |
| 18 | +``` |
| 19 | + |
| 20 | +示例 2: |
| 21 | + |
| 22 | +```javascript |
| 23 | +输入:s = "(u(love)i)" |
| 24 | +输出:"iloveu" |
| 25 | +``` |
| 26 | + |
| 27 | +示例 3: |
| 28 | + |
| 29 | +```javascript |
| 30 | +输入:s = "(ed(et(oc))el)" |
| 31 | +输出:"leetcode" |
| 32 | +``` |
| 33 | + |
| 34 | +示例 4: |
| 35 | + |
| 36 | +```javascript |
| 37 | +输入:s = "a(bcdefghijkl(mno)p)q" |
| 38 | +输出:"apmnolkjihgfedcbq" |
| 39 | +``` |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | +提示: |
| 44 | + |
| 45 | +```javascript |
| 46 | +0 <= s.length <= 2000 |
| 47 | +s 中只有小写英文字母和括号 |
| 48 | +我们确保所有括号都是成对出现的 |
| 49 | +``` |
| 50 | + |
| 51 | +来源:力扣(LeetCode) |
| 52 | +链接:https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses |
| 53 | +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 |
| 54 | + |
| 55 | + |
| 56 | +## 解题思路 |
| 57 | +初始化栈,栈顶元素为 " " |
| 58 | +遇到` '('`: 向栈顶压入空字符串 |
| 59 | +遇到` ')'`: 把栈顶的最后一个元素翻转 + 栈顶倒数第二个元素 |
| 60 | +遇到 字符: 直接将栈顶最后一个元素与它拼上 |
| 61 | + |
| 62 | +<a href="https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/solution/1190-fan-zhuan-mei-dui-gua-hao-jian-de-zi-chuan-ji/ |
| 63 | +">参考 tuotuoli 大佬解题思路</a> |
| 64 | + |
| 65 | +样例栈数组操作示意: |
| 66 | + |
| 67 | +```javascript |
| 68 | +样例:a(bcdefghijkl(mno)p)q |
| 69 | + |
| 70 | +a ['a'] |
| 71 | +( ['a', ''] |
| 72 | +b ['a', 'b'] |
| 73 | +c ['a', 'bc'] |
| 74 | +d ['a', 'bcd'] |
| 75 | +e ['a', 'bcde'] |
| 76 | +f ['a', 'bcdef'] |
| 77 | +g ['a', 'bcdefg'] |
| 78 | +h ['a', 'bcdefgh'] |
| 79 | +i ['a', 'bcdefghi'] |
| 80 | +j ['a', 'bcdefghij'] |
| 81 | +k ['a', 'bcdefghijk'] |
| 82 | +l ['a', 'bcdefghijkl'] |
| 83 | +( ['a', 'bcdefghijkl', ''] |
| 84 | +m ['a', 'bcdefghijkl', 'm'] |
| 85 | +n ['a', 'bcdefghijkl', 'mn'] |
| 86 | +o ['a', 'bcdefghijkl', 'mno'] |
| 87 | +) ['a', 'bcdefghijklonm'] |
| 88 | +p ['a', 'bcdefghijklonmp'] |
| 89 | +) ['apmnolkjihgfedcb'] |
| 90 | +q ['apmnolkjihgfedcbq'] |
| 91 | +``` |
| 92 | + |
| 93 | +```javascript |
| 94 | +/** |
| 95 | + * @param {string} s |
| 96 | + * @return {string} |
| 97 | + */ |
| 98 | +var reverseParentheses = function(s) { |
| 99 | + let stack = [''] |
| 100 | + for(let i=0;i<s.length;i++){ |
| 101 | + let ch = s[i] |
| 102 | + if(ch === '('){ |
| 103 | + stack.push('') |
| 104 | + }else if(ch === ')'){ |
| 105 | + let str = stack.pop() |
| 106 | + let tmp = str.split('').reverse().join('') |
| 107 | + stack[stack.length-1] += tmp |
| 108 | + }else{ |
| 109 | + stack[stack.length-1] += ch |
| 110 | + } |
| 111 | + } |
| 112 | + return stack.pop() |
| 113 | +}; |
| 114 | +``` |
| 115 | + |
| 116 | +## 最后 |
| 117 | +文章产出不易,还望各位小伙伴们支持一波! |
| 118 | + |
| 119 | +往期精选: |
| 120 | + |
| 121 | +<a href="https://github.com/Chocolate1999/Front-end-learning-to-organize-notes">小狮子前端の笔记仓库</a> |
| 122 | + |
| 123 | +<a href="https://yangchaoyi.vip/">访问超逸の博客</a>,方便小伙伴阅读玩耍~ |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | +```javascript |
| 128 | +学如逆水行舟,不进则退 |
| 129 | +``` |
| 130 | + |
0 commit comments