📅  最后修改于: 2023-12-03 15:40:54.531000             🧑  作者: Mango
Anagram是指由颠倒字母顺序而构成的新词,例如"race"和"care"就是Anagram。在计算机科学中,我们需要编写程序来判断两个字符串是否为Anagram。下面是一个Python程序用于判断两个字符串是否为Anagram。
def is_anagram(str1: str, str2: str) -> bool:
"""
判断两个字符串是否为Anagram
:param str1: 第一个字符串
:param str2: 第二个字符串
:return: 如果是Anagram返回True,否则返回False
"""
# 去除空格,并将字符串转换成小写字母
str1 = str1.replace(" ", "").lower()
str2 = str2.replace(" ", "").lower()
# 如果两个字符串长度不同,则不可能是Anagram
if len(str1) != len(str2):
return False
# 统计每个字符的出现次数
char_count = [0] * 26
for i in range(len(str1)):
char_count[ord(str1[i]) - ord('a')] += 1
char_count[ord(str2[i]) - ord('a')] -= 1
# 如果每个字符的出现次数都为0,则是Anagram
for count in char_count:
if count != 0:
return False
return True
上述程序使用了一个长度为26的列表来统计每个字符出现的次数。首先,将两个字符串去除空格,并转换成小写字母。然后,如果两个字符串长度不同,则不可能是Anagram。接着,使用列表char_count来记录每个字符出现的次数。列表中每个位置代表一个字符,位置上的值代表该字符在两个字符串中出现的次数之差。如果每个字符的出现次数都为0,则表示两个字符串是Anagram,否则不是Anagram。
使用示例:
print(is_anagram("race", "care")) # True
print(is_anagram("anagram", "nagaram")) # True
print(is_anagram("hello", "world")) # False
这个程序可以方便地检查两个字符串是否为Anagram。除此之外,对于需要统计每个字符出现次数的问题,也可以使用类似的方法进行解决。