LeetCode 第 242 題:給定兩個字符串 s 和 t,編寫一個函數來判斷 t 是否是 s 的字母異位詞


 

示例 1

輸入: s = "anagram", t = "nagaram"

輸出: true

示例 2

輸入: s = "rat", t = "car"

輸出: false

 

一個重要的前提“假設兩個字符串只包含小寫字母”,小寫字母一共也就 26 個,因此:

  • 可以利用兩個長度都為 26 的字符數組來統計每個字符串中小寫字母出現的次數,然后再對比是否相等;
  • 可以只利用一個長度為 26 的字符數組,將出現在字符串 s 里的字符個數加 1,而出現在字符串 t 里的字符個數減 1,最后判斷每個小寫字母的個數是否都為 0按上述操作,可得出結論:s 和 t 互為字母異位詞。
  • 或 建立兩個字典key為字符,value為字符出現次數,最后判斷兩個字符是否相等

 

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        dic1, dic2 = {}, {}
        for item in s:
            dic1[item] = dic1.get(item, 0) + 1
        for item in t:
            dic2[item] = dic2.get(item, 0) + 1
        return dic1 == dic2

        # return sorted(s) == sorted(t) 或


solution = Solution()
print(solution.isAnagram(s="anagram", t="nagaram"))  # True

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM