擅长:python、mysql、java
<p>你可以用暴力:</p>
<pre><code>s = 'BIBER'
li = ['BI', 'BIB', 'BIBE', 'BE', 'BER', 'ER']
import itertools as it
for i in range(2,len(li)+1):
for t in it.permutations(li, i):
if ''.join(t)==s:
print t
</code></pre>
<p>印刷品:</p>
<pre><code>('BI', 'BER')
('BIB', 'ER')
</code></pre>
<p>如果要测试某组子字符串是否可以完全组合为一个字符串:</p>
<pre><code>def builds(s, componts):
return any(s==''.join(t) for t in it.permutations(componts))
>>> builds(s, ('R','BE','I','B'))
True
</code></pre>
<p>这不会处理多次重用不同的子字符串(例如<code>('B','I','E','R')</code>),因此,您可以考虑使用Trie。你知道吗</p>