📅  最后修改于: 2023-12-03 14:46:46.915000             🧑  作者: Mango
当两个字符串中的字符相同,但是顺序不同时,它们被称为“Anagram”。在这种情况下,我们需要编写一个Python程序来检查两个字符串是否互为Anagram。
下面是一个Python程序,可以检查两个字符串是否互为Anagram:
def is_anagram(str1, str2):
"""
检查两个字符串是否互为anagram。
参数:
str1: 字符串1
str2: 字符串2
返回值:
True: 如果两个字符串是anagram。
False: 如果两个字符串不是anagram。
"""
# 长度不同的字符串不可能是anagram
if len(str1) != len(str2):
return False
# 统计第一个字符串中每个字符出现的次数
char_dict = {}
for char in str1:
if char in char_dict:
char_dict[char] += 1
else:
char_dict[char] = 1
# 在第二个字符串中减去每个字符的计数器
for char in str2:
if char in char_dict:
char_dict[char] -= 1
else:
# 如果第二个字符串中包含第一个中未出现的字符,则不是anagram
return False
# 如果所有的计数器都为0,则字符串是anagram
for count in char_dict.values():
if count != 0:
return False
return True
此代码段定义了名为is_anagram
的函数,该函数接受两个字符串作为输入,并返回一个布尔值,指示两个字符串是否互为anagram。
在此函数中,我们首先检查两个字符串的长度是否相等。如果不相等,那么它们肯定不是anagram。
接下来,我们将第一个字符串中的每个字符及其出现次数添加到一个字典中。然后,我们遍历第二个字符串,并从字典中减去每个字符的出现次数。如果第二个字符串中包含第一个中未出现的字符,则不是anagram。
最后,如果所有的计数器都为0,则字符串是anagram。否则,它们不是anagram。
现在,我们可以使用以下代码来测试我们的函数:
str1 = "silent"
str2 = "listen"
if is_anagram(str1, str2):
print("'%s' 和 '%s' 互为 anagram" % (str1, str2))
else:
print("'%s' 和 '%s' 不是 anagram" % (str1, str2))
输出:
'silent' 和 'listen' 互为 anagram
这表明我们的函数成功检测到这两个字符串是anagram。您可以使用其他字符串测试此功能。
在本文中,我们学习了如何编写一个Python程序来检查两个字符串是否互为anagram。我们通过使用一个字典来统计每个字符的出现次数来解决了这个问题。如果您有任何疑问,请随时让我们知道!