擅长:python、mysql、java
<p>与@MarcoBonelli answer一样,您可以使用<a href="https://docs.python.org/3/library/collections.html#collections.Counter" rel="nofollow noreferrer">collections.Counter</a>来创建一个字符串的表示形式,当且仅当这些字符串是彼此的换位符时,该字符串才会相等,例如:</p>
<pre><code>'bba' -> ('b', 2), ('a', 1)
'abb' -> ('b', 2), ('a', 1)
</code></pre>
<p>不必执行嵌套的for循环并检查每对,您可以使用字典对具有相同计数器表示的字符串进行分组,并使用单个循环:</p>
^{pr2}$
<p><strong>输出</strong></p>
<pre><code>[['abb', 'bba'], ['b', 'b'], ['ab', 'ba'], ['a', 'a']]
</code></pre>
<p>在输出中,子列表对应于字符串组,这些字符串是彼此的anagram。要使用字典中的计数器,您必须将项目转换为<a href="https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset" rel="nofollow noreferrer">frozenset</a>。最后,这种方法的复杂度是<em>O(n)</em>,其中<em>n</em>是子串的数目。在</p>