【问题标题】:Code Efficiency + Time Cost Clarification for Palindromic String Decompositions回文字符串分解的代码效率 + 时间成本说明
【发布时间】:2019-01-02 10:18:58
【问题描述】:

问题 1

对于生成给定字符串的所有回文分解的问题,作者提供了以下解决方案:

def palindromic_decompositions(input):
  def directed_palindrome_partitioning(offset, partial_partition):
    if offset == len(input):
      result.append(list(partial_partition))
      return 

    for i in range(offset + 1, len(input) + 1):
      prefix = input[offset:i]
      if prefix == prefix[::-1]:
        directed_palindrome_partitioning(i, partial_partition + [prefix])

  result = []
  directed_palindrome_partitioning(0, [])
  return result

在第 4 行,您将看到 partial_partition 包装在 list() 函数中,它实际上只是复制了 partial partition 并将其附加到结果中。

但是,由于我们从不改变 partial_partition,我认为这是对 partial_partition 的浪费性重复。每个函数调用只是将 partial_partition 重新分配给参数。我的理解是否正确?

我在以下输入案例中运行了这段代码,以及没有list() 的代码副本:(palindromic_decompositions('0204451881'),得到了相同的输出。

问题 2: 该问题提供的时间成本是 n x (2^n),但没有提供解释。我知道 n 部分是因为 list(partial_partition) -> 有人可以解释 (2^n) 的来源吗?

【问题讨论】:

    标签: python string recursion time-complexity


    【解决方案1】:

    对于 Q1:list() 是多余的,因为 partial_partition + [prefix] 也会制作副本。否则,没有它result 将被指向同一个底层对象的指针填充。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多