我正在处理一个简单的问题:
- 检查两个字符串是否为异序词(anagrams)。
我已经编写了简单的代码,可以检查两个字符串例如'abcd'和'dcba'是否为异序词,但是对于更复杂的字符串如"Astronomer"和"Moon starter"我不知道该怎么办。
line1 = input('Enter the first word: ')
line2 = input('Enter the second word: ')
def deleteSpaces(s):
s_new = s.replace(" ","")
return s_new
def anagramSolution2(s1,s2):
alist1 = list(deleteSpaces(s1))
alist2 = list(deleteSpaces(s2))
print(alist1)
print(alist2)
alist1.sort()
alist2.sort()
pos = 0
matches = True
while pos < len(deleteSpaces(s1)) and matches:
if alist1[pos]==alist2[pos]:
pos = pos + 1
else:
matches = False
return matches
首先,我认为问题在于处理空格,但后来我明白如果字符串长度不同,我的算法是无法工作的。
对于这种情况,我不知道该怎么办。
我在这里找到了一个很好的解决方案,但它也不起作用:
def anagrams(s1,s2):
return [False, True][sum([ord(x) for x in s1]) == sum([ord(x) for x in s2])]
如果我运行这个函数并对两个字符串进行测试,我将获得如下输出:
Examples:
First Word: apple
Second Word: pleap
output: True
First Word: Moon starter
Second Word: Astronomer
output: False //however it should should be True because this words are anagrams