我的问题与这个问题完全相同。我有一个字符数组(列表)。我想从该列表中获取所有可能的序列组合,但是限制字符数量(例如:最多2个字符)。此外,在排列行中不能重复使用单个字符:
chars = ['a', 'b', 'c', 'd']
# output
output = [['a', 'b', 'c', 'd'],
['ab', 'c', 'd'],
['a', 'bc', 'd'],
['a', 'b', 'cd'],
['ab', 'cd'],
['abc', 'd'], # this one will be exempted
['a', 'bcd'], # this one will be exempted
['abcd']] # this one will be exempted
我知道我可以在生成和构建序列时检查条件,以省略超出限制的字符组合。但这会增加运行时间。我的目的是减少现有执行时间。
没有字符计数限制,组合将像2^(N-1)一样生成。如果列表超过15个字符,执行程序需要太长时间。因此,我想通过字符限制减少组合计数。
优先考虑性能。我已经进行了两天的研究和尝试,但没有成功。