擅长:python、mysql、java
<p>python方法是通过字典理解使用<code>collections.Counter</code>和{<cd2>}的过滤键。为了提高效率,可以先将<code>ascii_letters</code>转换为<code>set</code>:</p>
<pre><code>from collections import Counter
from string import ascii_letters
letters_set = set(ascii_letters)
res = {k: v for k, v in Counter(sent).items() if k in letters_set}
print(res)
{'S': 1, 'h': 8, 'e': 16, 's': 17, 'l': 10, 'a': 5,
'o': 3, 'n': 1, 't': 2, 'r': 4, 'f': 1, 'u': 1}
</code></pre>
<p>此解决方案具有O(<em>m</em>+<em>n</em>)复杂性,而您当前的解决方案具有复杂度O(<em>m</em>*<em>n</em>)。通过理解<code>str.count</code>,就像<code>list.count</code>,具有O(n)复杂度,也就是说,字典理解中的每次迭代都需要对字符串进行完整的解析。在</p>