📌  相关文章
📜  用于检查两个字符串是否为 Anagram 的Python程序(1)

📅  最后修改于: 2023-12-03 15:40:54.531000             🧑  作者: Mango

用于检查两个字符串是否为 Anagram 的Python程序

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。除此之外,对于需要统计每个字符出现次数的问题,也可以使用类似的方法进行解决。