給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例:輸入: ["eat", "tea", "tan", "ate", "nat", "bat"],
輸出:[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]1.對每個子串排序生成乙個新的陣列,構造乙個字典d, 遍歷新陣列往字典裡放 o(nklogk) o(nk)
2.乙個很nice的思路,本質上不管是acb還是abc都出現了a b c各一次,我們以次數作為hash的key,就可以把符合要求的子串聚集起來!o(nk) o(nk)
class solution(object):
def groupanagrams(self, strs):
res = collections.defaultdict(list)
for one in strs:
return res.values()
#同樣的寫法,qaq....
class solution(object):
def groupanagrams(self, strs):
""":type strs: list[str]
:rtype: list[list[str]]
"""str_ = strs[:]
for i in range(len(strs)):
strs[i]=''.join(sorted(strs[i]))
#sorted("123") ['1','2','3']
d={}
for i in range(len(str_)):
if strs[i] in d:
else:
d[strs[i]] = [str_[i]]
return d.values()
class solution:
def groupanagrams(strs):
ans = collections.defaultdict(list)
for s in strs:
count = [0] * 26
for c in s:
count[ord(c) - ord('a')] += 1
return ans.values()
49 字母異位詞分組
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。思路 這個題的思路非常清晰,遍歷字串陣列,對其中每乙個...
49 字母異位詞分組
arrays.sort排序的時間複雜度為o slogs 外面還有n次迴圈,總共為nslogs,s為字串的長度。空間複雜度為o ns hashmap儲存了每個字串 1 我對arraylist操作不熟,還有arrays.sort 得趕緊學習了 2 乙個字串會有原始字元,所以只要知道原始字元,原始字元下一...
49 字母異位詞分組
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。我們將每個字串按照字母順序排序,這樣的話就可以把 ea...