gpt4 book ai didi

python - 在线性时间内检查字谜字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:37 24 4
gpt4 key购买 nike

因此,给定两个字符串的输入,我有以下线性时间解决方案来检查一个字符串是否是另一个字符串的变位词。我想要一个更简洁和 pythonic 的线性时间解决方案。

def perm_check(str1,str2):

if len(str1)!=len(str2):
return False

d1,d2={},{}

for i in range(len(str1)):

l1=str1[i]
l2=str2[i]

if l1 in d1:
d1[l1]+=1
else:
d1[l1]=1


if l2 in d2:
d2[l2]+=1
else:
d2[l2]=1


for letter in d1:

if letter not in d2:
return False

if d1[letter] != d2[letter]:

return False

return True


print(perm_check("stab","bats"))

我该如何优化它?

最佳答案

你可以使用 python collections.Counter类来做到这一点。基本上,在变位词中,两个字符串中每个字符的数量必须相同,因此您只需要计算两个字符串中每个字符的字符数,然后比较它们。 Counter 类将为您创建字典,您可以直接比较它们。

from collections import Counter

def is_anagram(string1, string2):
return Counter(string1) == Counter(string2)

结果:

>>> is_anagram("helper", "perhel")
True
>>> is_anagram("helper", "perhe")
False
>>> is_anagram("helper", "perhes")
False

关于python - 在线性时间内检查字谜字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26836404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com