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),因此方法二更适合处理大规模数据。
