擅长:python、mysql、java
<p>过滤一个简单而明显的条件,如“没有前导零”,它可以更有效地在组合建筑层完成。在</p>
<pre><code>def generate_pieces(input_string, predicate):
if input_string:
if predicate(input_string):
yield [input_string]
for item_size in range(1, len(input_string)+1):
item = input_string[:item_size]
if not predicate(item):
continue
rest = input_string[item_size:]
for rest_piece in generate_pieces(rest, predicate):
yield [item] + rest_piece
</code></pre>
<p>生成每一个组合的削减,只要它不是有趣的:</p>
^{pr2}$
<p>只有那些没有前导零的片段:</p>
<pre><code>>>> list(generate_pieces('10002', lambda x: not x.startswith('0')))
[['10002'], ['1000', '2']]
</code></pre>
<p>递归步骤从不考虑以零开头的子字符串。在</p>