题目链接:https://leetcode.cn/problems/valid-anagram/description/
解法1:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
record = [0]*26
for i in s:
record[ord(i) - ord('a')] += 1
for i in t:
record[ord(i) - ord('a')] -= 1
for i in range(26):
if record[i] != 0:
return False
return True
1. record = [0]*26
生成数组的方法
2.ord()函数
ord()
是 Python 内置的一个函数,用于返回单个字符的 Unicode 码点(整数表示)。它的作用是将一个字符转换为其对应的整数值。
解法2:
from collections import defaultdict
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
s_dict = defaultdict(int)
t_dict = defaultdict(int)
for x in s:
s_dict[x] += 1
for x in t:
t_dict[x] += 1
return s_dict == t_dict
在 Python 中,defaultdict
是 collections
模块中的一个子类,用于创建字典(dict
)。与普通字典不同的是,defaultdict
在访问不存在的键时会自动创建一个键,并将其值设置为默认值,而不抛出 KeyError
异常。
通常用在需要对键进行计数或统计的场景,例如频率统计等。
解法3:
from collections import Counter
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
return Counter(s) == Counter(t)
Counter
是 Python 中 collections
模块提供的一个类,它是一个字典子类,专门用于计数(统计)元素在可迭代对象中出现的次数。Counter
会自动计算元素的频率,并将元素作为字典的键,频率作为对应的值。