擅长:python、mysql、java
<pre><code>from itertools import combinations
def dashed_comb(base_str, exp_len):
for comb in combinations(range(exp_len), exp_len-len(base_str)):
letters = iter(base_str)
yield ''.join('-' if x in comb else letters.next()
for x in xrange(exp_len))
</code></pre>
<p>递归的(此处提供,因为它比基于itertools的速度快两倍):</p>
^{pr2}$
<p>样本输出:</p>
<pre><code>>>> for dc in dashed_comb('AAB', 5):
... print dc
...
...
AAB
-A-AB
-AA-B
-AAB-
A AB
A-A-B
A-AB-
AA B
AA-B-
AAB
</code></pre>