給定兩個字串 s 和 t ,編寫乙個函式來判斷 t 是否是 s 的字母異位詞。
示例 1:
輸入: s = "anagram", t = "nagaram"
輸出: true
示例 2:
輸入: s = "rat", t = "car"
輸出: false
對兩個字串進行排序,若滿足題目要求則其排序後定相等。
# 排序法 o(nlogn)
class solution(object):
def isanagram(self, s, t):
""":type s: str
:type t: str
:rtype: bool
"""return sorted(s) == sorted(t)
即使使用最快的快排方法,時間複雜度也有o(nlogn)
根據定義,每個字串的中的每個字元的數量是相同的,所以,對每個字串進行雜湊計數,若兩個雜湊表相同,則返回 true ,python 中使用字典來實現雜湊表。
class solution2(object):
def isanagram(self, s, t):
""":type s: str
:type t: str
:rtype: bool
"""s_dict = {}
t_dict = {}
for item_s in s:
if item_s not in s_dict:
s_dict[item_s] = 1
else:
s_dict[item_s] += 1
for item_t in t:
if item_t not in t_dict:
t_dict[item_t] = 1
else:
t_dict[item_t] += 1
return s_dict == t_dict
上述**中包含了乙個非常典型的用法:判斷字典中是否有該鍵,沒有時將鍵加進去賦值,有時做另外處理。即:
if item_s not in s_dict:
s_dict[item_s] = 1
else:
s_dict[item_s] += 1
可以用一種更為簡單的寫法代替:
s_dict[item_s] = s_dict.get(item_s, 0) + 1
Leetcode 242 有效的字母異位
time 20190901 type easy 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true 示例 2 輸入 s rat t car 輸出 false 說明 你可以假設字串只包含小寫字母。高階 如果...
LeetCode242 有效的異位詞
給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true示例 2 輸入 s rat t car 輸出 false說明 你可以假設字串只包含小寫字母。高階 如果輸入字串包含 unicode 字元怎麼辦?你能否調整...
LeetCode 242 有效的字母異位
給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。說明 你可以假設字串只包含小寫字母。高階 如果輸入字串包含 unicode 字元怎麼辦?你能否調整你的解法來應對這種情況?思路 兩個字串長度不等,則不滿足。兩個字串相等,則滿足。定義兩個陣列,分別記錄s和t中每個字母出現的次...