【华为机试】2023年真题B卷(python)-反转每对括号间的子串
2023-12-28 13:01:13
一、题目
题目描述:
给出一个字符串?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)
文章来源:https://blog.csdn.net/u014481728/article/details/135256801
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!