【华为机试】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进行投诉反馈,一经查实,立即删除!