April 3, 2025

2 thoughts on “Typical Code Interview Problem 3: Generating All Possible Combinations of Well-Formed Brackets

  1. 题目标题:

    生成所有可能的括号组合(Python实现)
    将一个数n作为参数,生成所有可能的n对括号的组合。

    问题描述:

    给定一个数字n,生成所有可能的n对括号的组合,以使它们成为正确的括号序列。例如,当n为3时,可能的组合如下:
    ((()))
    (()())
    ()(())
    ()()()
    (())()

  2. 以下是生成所有可能的n对括号的递归解法(Python实现)。

    我们可以使用递归方法来生成所有可能的n对括号的组合。

    想法是一直添加左括号,直到添加了n/2个左括号,然后我们开始添加右括号。我们跟踪添加的左右括号数量,并且仅当左括号的数量大于右括号的数量时才添加右括号。

    以下是“generate_brackets()”函数的实现:

    def generate_brackets(n):
    result = []
    generate_helper(n, ”, 0, 0, result)
    return result

    def generate_helper(n, current, open_count, close_count, result):
    if len(current) == n * 2:
    result.append(current)
    return
    if open_count < n: generate_helper(n, current+'(', open_count+1, close_count, result) if close_count < open_count: generate_helper(n, current+')', open_count, close_count+1, result) 在“generate_helper()”中,我们检查是否已达到n*2的长度(因为每个完整的括号包含2个字符,即一个左括号和一个右括号)。如果已达到长度,则将当前字符串添加到结果列表中。 如果添加的左括号数量小于n,则使用更新的字符串、增加1个左括号计数器和相同的右括号计数器递归调用“generate_helper()”。 如果添加的右括号数量小于左括号的数量,则使用更新的字符串、相同的左括号计数器和增加1个右括号计数器递归调用“generate_helper()”。 最后,我们返回结果列表。 以下是如何使用该函数的方法: print(generate_brackets(1)) # ['()'] print(generate_brackets(3)) # ['((()))', '(()())', '()(())', '()()()', '(())()'] 输出与期望结果相匹配。

Comments are closed.