【发布时间】: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