【华为机试】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

三、解题思路

  1. 创建一个(使用列表模拟栈的数据结构)和一个变量current_str用于保存当前括号内的字符串。
  2. 遍历输入字符串s的每个字符:
    • 如果遇到左括号(,将当前括号内的字符串保存到栈中,并重置current_str为空字符串。
    • 如果遇到右括号),从栈中取出上一个括号内的字符串,将其与当前括号内的字符串反转后拼接,更新current_str
    • 如果遇到非括号字符,将其添加到current_str中。
  3. 最后返回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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。