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

Python函数之判断两个字符串是否为异位词

发布时间:2023-06-22 04:54:54

异位词(Anagram)是指由相同的字母以不同的顺序组成的单词。比如,"silent"和"listen"就是一对异位词。

在Python中,判断两个字符串是否为异位词,可以通过以下方法实现:

方法一:使用排序

首先,将两个字符串分别排序,如果排序后的结果相同,则这两个字符串就是异位词。

示例代码如下:

def is_anagram(s1, s2):
    return sorted(s1) == sorted(s2)

print(is_anagram("silent", "listen")) # True
print(is_anagram("hello", "world")) # False

方法二:使用哈希表

在Python中,可以使用字典来实现哈希表。首先,将 个字符串中的每个字符及其出现次数存储在字典中,然后遍历第二个字符串,如果遍历到的字符在字典中出现过,则将该字符的出现次数减一,否则说明这两个字符串不是异位词。

示例代码如下:

def is_anagram(s1, s2):
    if len(s1) != len(s2):
        return False
    count = dict()
    for c in s1:
        count[c] = count.get(c, 0) + 1
    for c in s2:
        if c not in count or count[c] == 0:
            return False
        count[c] -= 1
    return True

print(is_anagram("silent", "listen")) # True
print(is_anagram("hello", "world")) # False

以上两种方法都可以有效地判断两个字符串是否为异位词,但是它们的时间复杂度和空间复杂度不同。方法一的时间复杂度为O(nlogn),空间复杂度为O(n),其中n为字符串的长度;方法二的时间复杂度为O(n),空间复杂度为O(n),因此方法二更适合处理大规模数据。