获取字符串的所有组合
问题内容:
我有一个组合作业,涉及从特定的字符串组合中获取长度小于或等于6的每个单词。
在这种情况下,它是S =
{‘a’,’ab’,’ba’}。教授刚刚开始列出它们,但是我认为使用程序可以更容易解决。唯一的问题是,我无法获得一个好的算法来实际计算所有可能的选项。
如果有人可以提供帮助,我将不胜感激。我通常使用Python编程,但实际上我只需要有关算法的帮助。
问题答案:
您可以迭代生成由一个部分,两个部分,三个部分等组成的所有字符串,直到在一个步骤中生成的所有字符串都超过六个字符为止。进一步的步骤将只生成更长的字符串,因此所有可能的短字符串都已经生成。如果在每个步骤中收集这些短字符串,那么最终会得到一组所有可能生成的短字符串。
在Python中:
S = set(['a', 'ab', 'ba'])
collect = set()
step = set([''])
while step:
step = set(a+b for a in step for b in S if len(a+b) <= 6)
collect |= step
print sorted(collect)