1190.反转每对括号间的子串
https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/
难度:中等
题目:
给出一个字符串 s(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
注意,您的结果中 不应 包含任何括号。
提示:
- 0 <= s.length <= 2000
- 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"
分析
遇到类似括号等问题的,使用栈操作是最简单和最容易理解的方式。
维护一个栈,然后除了右括号,的字符都入栈。
当遇到右括号是开始循环出栈,加入一个临时列表,直到遇到左括号停止,并将左括号出栈。
在将临时表入栈,继续下一次操作...
最后将列表进行拼接,就可以完成所有代码了。
解题:
class Solution:
def reverseParentheses(self, s):
stack = []
for i in s:
if i != ')':
stack.append(i)
continue
tmp = []
while stack[-1] != '(':
tmp.append(stack.pop())
stack.pop()
if tmp:
stack.extend(tmp)
return ''.join(stack)
欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。
我的个人博客:https://qingfengpython.cn
网友评论