2024/12/3 【雜湊表】 LeetCode 242.有效的字母異位詞 【x】

axuu發表於2024-12-03

題目連結: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 中,defaultdictcollections 模組中的一個子類,用於建立字典(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 會自動計算元素的頻率,並將元素作為字典的鍵,頻率作為對應的值。

相關文章