15 有效的字母易位詞-20200327
中間斷了兩天,今天是週五,在下週一前會補上前面的兩道題。
題目
給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。
示例
輸入: s = "anagram", t = "nagaram"
輸出: true
說明
你可以假設字符串只包含小寫字母。
進階
如果輸入字符串包含 unicode 字符怎麼辦?你能否調整你的解法來應對這種情況?
注意事項
- 什麼是字母易位詞,就是字母順序不一樣,字母的個數、重複次數以及哪些字母都是一樣的。
思路一
看到這道題,有不少想法。可以先用 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() 來表示重複次數。