擅长:python、mysql、java
<p>一种方法是使用集合找到所有单词的公共字母,然后计算单词中每个字母的最小出现次数:</p>
<pre><code>words = 'beel beez baee beae'.split()
common_letters = set.intersection(*(set(word) for word in words))
occurences = {letter: min(word.count(letter) for word in words) for letter in common_letters}
common_word = ''.join([letter * occurences[letter] for letter in common_letters])
print(common_word)
# bee
</code></pre>
<p>使用<code>collections.Counter</code>来避免重复计算同一单词的稍微高效的版本:</p>
<pre><code>from collections import Counter
words = 'beel beez baee beae'.split()
counts = [Counter(word) for word in words]
common_letters = set.intersection(*(set(c.keys()) for c in counts))
occurences = {letter: min(count[letter] for count in counts) for letter in common_letters}
common_word = ''.join([letter * occurences[letter] for letter in common_letters])
print(common_word)
# bee
</code></pre>