我正在尝试定义一个接受 2 个字符串的函数,比较这两个字符串,如果它们是变位词则返回 True。我不想导入集合。
因此,如果字符串 1 是 python
并且字符串 2 是 nohtyp
,它应该返回 True
。否则,很明显,返回 false
。到目前为止,这是我的代码:
def check_anagram(str1, str2):
if len(str1) != len(str2):
return False
else:
for i in range(0, len(str1), 1):
if i in range(0, len(str2), 1):
return True
else:
return False
它适用于大多数情况,但当
str1 是 aaaaaaaaaabbbbbbbbbb
str2 是 ababababbbababababab
,它返回 true
当 str1 为 xxxyyyxxx
且 str2 为 yyyxxxyyy
时,它也返回 True
。
对于这两种情况,它应该重新运行 False
,但我不知道。
有人可以帮我解决这个问题吗?
最佳答案
我认为完成任务最简单的方法是对字符串进行排序并像这个例子一样比较它们:
def check_anagram(a = '', b = ''):
return sorted(a) == sorted(b)
测试 1:
a = "python"
b = "nohtyp"
print(check_anagram(a, b))
输出:
>>> True
测试 2:
a = "aaaaaaaaaabbbbbbbbb"
b = "ababababbbababababab"
print(check_anagram(a, b))
输出:
>>> False
测试 3:
a = "xxxyyyxxx"
b = "yyyxxxyyy"
print(check_anagram(a, b))
输出:
>>> False
关于python-3.x - Python - 比较 2 个单词并检查它们是否是变位词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914927/