这是字符串的python列表:
patterns = [ “KBKKB” “BBBK” “BKB” “KBBB” “KBB” “BKBB” “BBKB” “KKBKB” “BKBK” “KBKB” “KBKBK” “步步高”, “BB”, “BKKB” “BBB”, “KBBK” “BKKBK” “KB”, “KBKBK” “KKBKKB” “KBK” “BBKBK” “BBBB” “BK” “KKBKBK” “KBBKB” “BBKKB” “KKKKBB” “KKB” ]
我有一个输入字符串,由K和B组成,只有任意长度。我想知道输入字符串的所有可能的完整分解。只是一个例子,一个8 B的字符串:
BBBBBBBB
以下是可能的分解
BB BB BB BB BB BBBB BBBB BBBB BB BB BB BB BBBB BBB BBB BB BB BBB BBB任何人都可以指导我如何去做吗?我现在不太关心效率。
答案 0 :(得分:5)
这是使用递归的一种方法:
def getPossibleDecompositions(s):
if s == '':
yield []
else:
for pattern in patterns:
if s.startswith(pattern):
for x in getPossibleDecompositions(s[len(pattern):]):
yield [pattern] + x
for x in getPossibleDecompositions('BBBBBBBB'):
print x