问题:我想从 36 个字符中生成所有可能的组合,这些字符由固定长度字符串中的字母和数字组成。假设术语“固定长度”是我的字符串长度的上限。下面列出了其中一些组合:abc..z01..9...aaaaaaaaaaab..9999999999999999999899999999999999999999 // end of the list我不想将它们存储在内存或磁盘中,因为我对它们进行了计算,如果它们不符合目标结果,那么我就不再需要它了。方法:1. 第一次尝试,我选择递归来创建字符串。但是使用内存实在是太糟糕了。2. 对于第二次尝试,我使用 DFS 算法,因为它在使用内存方面几乎是最佳的,因为它大约为O(bm)。但从时间上看,非常耗时。有没有其他方法可以更优化地做到这一点?更新这里是长度为 2 和 3 字符的可能输出:abcaaabacbabbbccacbcc
2 回答

慕村9548890
TA贡献1884条经验 获得超4个赞
您可以为此使用itertools.product。它返回一个固定长度序列的生成器。
当您首先按长度然后按字典顺序排列字符串时,您可以使用这样的东西
import itertools
for l in range(1, 5):
for seq in itertools.product("abc", repeat=l):
print("".join(seq))
添加回答
举报
0/150
提交
取消