题目描述:
给出一个字符串?s(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
注意,您的结果中不应包含任何括号。
示例 1:
输入:
(abcd)
输出:
dcba示例 2:
输入:(u(love)i)
输出:iloveu
解释:先反转子字符串 "love" ,然后反转整个字符串。
示例 3:
输入:(ed(et(oc))el)
输出:leetcode
解释:先反转子字符串 "oc" ,接着反转 "etco" ,然后反转整个字符串。
示例 4:
输入:a(bcdefghijkl(mno)p)q
输出:apmnolkjihgfedcbq
- 创建一个栈(使用列表模拟栈的数据结构)和一个变量
current_str
用于保存当前括号内的字符串。- 遍历输入字符串
s
的每个字符:
- 如果遇到左括号
(
,将当前括号内的字符串保存到栈中,并重置current_str
为空字符串。- 如果遇到右括号
)
,从栈中取出上一个括号内的字符串,将其与当前括号内的字符串反转后拼接,更新current_str
。- 如果遇到非括号字符,将其添加到
current_str
中。- 最后返回
current_str
作为结果,其中不包含任何括号。
# -*- coding: utf-8 -*-
'''
@File : 2023-B-反转每对括号间的子串.py
@Time : 2023/12/27 21:59:01
@Author : mgc
@Version : 1.0
@Desc : None
'''
# import os
# import re
# import sys
# import copy
# import math
# import queue
# import functools
# from queue import Queue
# from collections import Counter, defaultdict
def reverseParentheses(s):
stack = [] # 用于模拟栈的数据结构
current_str = "" # 用于保存当前括号内的字符串
for char in s:
if char == '(':
stack.append(current_str) # 将当前括号内的字符串保存到栈中
current_str = "" # 重置当前括号内的字符串
elif char == ')':
current_str = stack.pop() + current_str[::-1] # 反转当前括号内的字符串并与栈中的字符串拼接
else:
current_str += char # 将非括号字符添加到当前括号内的字符串
return current_str
# 测试代码
input_str = input()
result = reverseParentheses(input_str)
print(result)