如何使用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为字符的种类数,因为需要使用字典记录字符的频率。
