49 字母異位詞分組

2021-10-03 16:40:40 字數 1205 閱讀 6974

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。

示例:輸入: ["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...