LeetCode 探索初級算法-字符串:15 有效的字母易位詞-20200327

15 有效的字母易位詞-20200327

中間斷了兩天,今天是週五,在下週一前會補上前面的兩道題。

題目

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

示例

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

說明

你可以假設字符串只包含小寫字母。

進階

如果輸入字符串包含 unicode 字符怎麼辦?你能否調整你的解法來應對這種情況?


注意事項

  1. 什麼是字母易位詞,就是字母順序不一樣,字母的個數、重複次數以及哪些字母都是一樣的。

思路一

看到這道題,有不少想法。可以先用 set() 判斷是否有不一樣的字母。有得話直接 return False,沒有再判斷出現字母的重複次數,這個可以用字典或者列表實現。最後判斷順序是否一致。

修改經歷:

1. 一次通過。(第一次提交)

  • 執行用時 :48 ms, 在所有 Python3 提交中擊敗了84.96%的用戶
  • 內存消耗 :13.9 MB, 在所有 Python3 提交中擊敗了5.02%的用戶

心得體會:

這題不難。

最終代碼展示:

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        sSet, tSet = set(s), set(t)
        if sSet != tSet:
            return False
        else:
            for i in sSet:
                if s.count(i) != t.count(i):
                    return False
                else:
                    pass
            for j in range(0, len(s)):
                if s[j] != t[j]:
                    break
                else:
                    pass
        return True

題解的答案都沒關注詞語的字母順序,所以就不參考題解了。不過要注意的是,大部分用的 sort(s) 來生成字符串s的順序。

至於進階的unicode字符,其實字典就可以代替 conut() 來表示重複次數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章