Reverse Substrings Between Each Pair of Parentheses in Python

# Reverse Substrings Between Each Pair of Parentheses in Python

You are given a string `s` that consists of lower case English letters and brackets.

Reverse the strings in each pair of matching parentheses, starting from the innermost one.

Your result should not contain any brackets.

## Example 1:

``````Input: s = "(abcd)"

Output: "dcba"``````

## Example 2:

``````Input: s = "(u(love)i)"

Output: "iloveu"

Explanation: The substring "love" is reversed first, then the whole string is reversed.``````

## Example 3:

``````Input: s = "(ed(et(oc))el)"

Output: "leetcode"

Explanation: First, we reverse the substring "oc", then "etco", and finally, the whole string.``````

## Example 4:

``````Input: s = "a(bcdefghijkl(mno)p)q"

Output: "apmnolkjihgfedcbq"``````

## Constraints:

`````` 0 <= s.length <= 2000

s only contains lower case English characters and parentheses.

It's guaranteed that all parentheses are balanced. ``````

## Solution:

``````class Solution(object):
def reverseParentheses(s):
if not s:
return ''

arr = []
for char in s:
if char == ')':
combine_str = ''
while arr and arr[-1] != '(':
elem = arr.pop()[::-1]
combine_str += elem
arr.pop()
arr.append(combine_str)
else:
arr.append(char)
return "".join(arr)

s = "(abcd)"
print(Solution.reverseParentheses(s))