欢迎访问宙启技术站
智能推送

如何使用Python编写一个判断两个字符串是否为Anagram的函数?

发布时间:2023-12-03 12:08:46

判断两个字符串是否为Anagram(变位词)的函数可以通过计数每个字符的出现次数来实现。在Python中,可以使用字典来记录字符出现的频率。下面是一个使用Python编写的判断两个字符串是否为Anagram的函数,代码如下:

def is_anagram(str1, str2):
    # 初始化两个空字典用于记录字符频率
    freq1 = {}
    freq2 = {}

    # 遍历第一个字符串,计算每个字符的频率
    for char in str1:
        if char in freq1:
            freq1[char] += 1
        else:
            freq1[char] = 1

    # 遍历第二个字符串,计算每个字符的频率
    for char in str2:
        if char in freq2:
            freq2[char] += 1
        else:
            freq2[char] = 1

    # 比较两个字典是否相等
    return freq1 == freq2

该函数接受两个参数,即两个要比较的字符串,返回一个布尔值表示是否为Anagram。

函数的主要逻辑是使用两个字典freq1和freq2分别记录两个字符串中每个字符的频率。首先,我们遍历第一个字符串str1,对于每个字符char,判断它是否已经在freq1中存在。如果存在,则将对应的频率加1;如果不存在,则将字符作为键,频率初始化为1。接下来,我们同样遍历第二个字符串str2,并按照同样的逻辑计算字符的频率。

最后,我们比较两个字典freq1和freq2是否相等,如果相等则说明两个字符串为Anagram,返回True;否则,说明两个字符串不是Anagram,返回False。

下面是几个使用该函数的示例:

print(is_anagram("listen", "silent"))  # True,两个字符串为Anagram
print(is_anagram("anagram", "nagaram"))  # True,两个字符串为Anagram
print(is_anagram("hello", "world"))  # False,两个字符串不是Anagram
print(is_anagram("python", "java"))  # False,两个字符串不是Anagram

这个函数的时间复杂度为O(n),其中n为较长字符串的长度,因为需要遍历两个字符串。空间复杂度为O(k),其中k为字符的种类数,因为需要使用字典记录字符的频率。