我在 Python 中通过以下方式解决了这个问题:
s1,s2 = raw_input().split()
set1 = set(s1)
set2 = set(s2)
diff = len(set1.intersection(s2))
if(diff == 0)
print "Anagram!"
else:
print "Not Anagram!"
我觉得还不错。但是我教授的程序说我遗漏了一些边缘案例。你能想到我可能错过的任何边缘案例吗?
请您参考如下方法:
解决这个问题的正确方法是计算两个字符串中的字符数并比较它们中的每一个以查看所有字符是否相同以及它们的计数是否相同。
Python 有一个 collections.Counter为您完成这项工作。所以,你可以简单地做
from collections import Counter
if Counter(s1) == Counter(s2):
print "Anagram!"
else:
print "Not Anagram!"
如果您不想使用Counter,您可以推出您自己的版本,与普通词典进行比较。
def get_frequency(input_string):
result = {}
for char in input_string:
result[char] = result.get(char, 0) + 1
return result
if get_frequency(s1) == get_frequency(s2):
print "Anagram!"
else:
print "Not Anagram!"
