題目連結: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
會自動計算元素的頻率,並將元素作為字典的鍵,頻率作為對應的值。