擅长:python、mysql、java
<p>这是<a href="http://interactivepython.org/runestone/static/pythonds/AlgorithmAnalysis/AnAnagramDetectionExample.html" rel="nofollow">http://interactivepython.org/runestone/static/pythonds/AlgorithmAnalysis/AnAnagramDetectionExample.html</a>的一个不错的选择:</p>
<pre><code>def anagramSolution(s1,s2):
TABLE_SIZE = 128
c1 = [0]*TABLE_SIZE
c2 = [0]*TABLE_SIZE
for ch in s1:
pos = ord(ch)
c1[pos] = c1[pos] + 1
for ch in s2:
pos = ord(ch)
c2[pos] = c2[pos] + 1
j = 0
stillOK = True
while j<TABLE_SIZE and stillOK:
if c1[j]==c2[j]:
j = j + 1
else:
stillOK = False
return stillOK
</code></pre>
<p>这是在O(n)中运行的。基本上,循环两个字符串,计算每个字母的出现次数。最后,您可以简单地迭代每个字母,确保计数相等。在</p>
<p>正如评论中所指出的,对于unicode,这将很难扩展。如果您希望使用unicode,则可能需要使用字典。在</p>