擅长:python、mysql、java
<p>我认为这有助于简化你的工作。特别是,从功能上把子项的测试与筛选候选项的过程分开。这就是我的方法:</p>
<pre><code>def is_sub_anagram( word, candidate ):
word = list( word )
for letter in candidate:
try:
word.remove( letter )
except ValueError:
return False
return True
def filter_sub_anagrams( word, candidates ):
return [ x for x in candidates if is_sub_anagram( word, x ) ]
print( filter_sub_anagrams( 'apple', [ 'ppl', 'al', 'app', 'apple', 'aapl' ] ) )
</code></pre>
<p>输出为:</p>
<pre><code>['ppl', 'al', 'app', 'apple']
</code></pre>
<p>请注意,<code>'aapl'</code>不是也不应该包含在输出中。你知道吗</p>