擅长:python、mysql、java
<p>下面是一个解决方案,它允许您使用重复字母的不同组合迭代字符串的所有版本:</p>
<pre><code>from itertools import product, groupby
# groups == ['aaaa', 'ppp', 'lll', 'ee']
groups = [''.join(g) for c, g in groupby('aaaappplllee')]
# lengths is an iterator that will return all combinations of string lengths to
# use for each group, starting with [4, 3, 3, 2] and ending with [1, 1, 1, 1]
lengths = product(*[range(x, 0, -1) for x in map(len, groups)])
# Using the lengths from the previous line, this is a generator that yields all
# combinations of the original string with duplicate letters removed
words = (''.join(groups[i][:v] for i, v in enumerate(x)) for x in lengths)
>>> for word in words:
... print word
...
aaaappplllee
aaaapppllle
aaaapppllee
aaaappplle
aaaappplee
aaaappple
...
apple
aplllee
apllle
apllee
aplle
aplee
aple
</code></pre>
<p>这不是查找正确单词的最有效的解决方案,但它与OP最初的查找匹配方法是一致的。在</p>