【Leetcode解題】242. Valid Anagram
題目
- 題目連結
- 目標函式 :
isAnagram(s, t)- Input :
s: str、t: str - Output :
bool
- Input :
解題概念
- 題意 : 給予兩個字串
s、t,判斷s是否為t的 Anagram - Anagram (同字母異序字) : https://en.wikipedia.org/wiki/Anagram
我的寫法
- 想法 : 使用 Hashmap 去處理
- 將
s與t分別轉換為{字元 : 字元個數}的 Hashmap - 比較兩個 Hashmap 是否相等
- 將
- 程式碼 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15def string2Hashmap(self, s): # 將字串轉為 Hashmap
res = dict()
for c in s:
if c in res:
res[c] += 1
else: # not c in s
res[c] = 1
return res
def isAnagram(self, s, t):
if self.string2Hashmap(s) == self.string2Hashmap(t):
return True
else:
return False - 成效 :
- Time Complexity : $\color{DB4D6D}{O(n)}$
- Runtime: 33 ms (faster than 86.67%)
- Memory Usage: 13.6 MB (more than 99.63%)
解答 or 其他優秀寫法 - Part1
- 想法 : 基本上與我的想法相同,但只使用一個字典
- 程式碼 :
1
2
3
4
5
6
7def isAnagram(self, s, t):
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 - 成效 :
- Time Complexity : $\color{DB4D6D}{O(n)}$
- Runtime: 32 ms (faster than 88.1%)
- Memory Usage: 13.7 MB (more than 94.86%)
解答 or 其他優秀寫法 - Part2
- 想法 : 直接對兩串進行排序後再比較
- 程式碼 :
1
2def isAnagram(self, s, t):
return sorted(s) == sorted(t) - 成效 :
- Time Complexity : $\color{DB4D6D}{O(n)}$
- Runtime: 54 ms (faster than 28.8%)
- Memory Usage: 14.4 MB (more than 59.22%)
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


