LeetCode 49 字母異位詞分組

2021-10-12 02:56:00 字數 1612 閱讀 9411

結構體 最終以結構體的思路用列表實現

def groupanagrams(self, strs):

""":type strs: list[str]

:rtype: list[list[str]]

"""tmplist= # tmplist用來儲存原字串和排序後的字串

littlelist= # littlelist用來儲存最終返回的列表中的小列表

ans= # ans用來儲存最後要返回的列表

for i in strs:

# wordlist是每個字串中的字母排序後的列表(對字串排序生成的是列表)

# 並將這個列表轉換成字串

# 將新生成的字串和原來的字串存入tmplist列表

wordlist=sorted(i)

newword=''

for j in wordlist:

newword=newword+j

# 對生成的tmplist列表排序 這樣包含相同字母的字串就會排列在一起

# 存在sortedtmp中 並在最後加上end作為結束標記

sortedtmp=sorted(tmplist)

# 對sortedtmp中的新字串進行判斷

# 若當前的新字串和前面的新字串一樣 代表這兩個列表的原字串包含的字母是一樣的 將他們加入同乙個列表littlelist

# 若當前的新字串和前面的新字串不同 代表這兩個列表的原字串包含的字母是不同的 將之前字母都相同的字串列表littlelist加入到ans中 並清空littlelist

for i in range(1,len(sortedtmp)):

if sortedtmp[i][0]==sortedtmp[i-1][0]:

else:

if sortedtmp[i]=='end':

break

littlelist=

return ans

以上**實現起來繁瑣

class solution:

def groupanagrams(self, strs: list[str]) -> list[list[str]]:

dict = {}

for item in strs:

key = tuple(sorted(item))

dict[key] = dict.get(key, ) + [item]

return list(dict.values())

item= eat

key= ('a', 'e', 't')

dict[key]= ['eat']

item= tea

key= ('a', 'e', 't')

dict[key]= ['eat', 'tea']

item= tan

key= ('a', 'n', 't')

dict[key]= ['tan']

最終的dict:

所以輸出的是dict.values()

LeetCode49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。設定乙個map向量,專門用來統計字串中,所有字元出現的...

LeetCode 49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。這道題的意思就是把含有相同字母的單詞歸類而已,思路其實...

LeetCode 49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 此題輸入的是乙個字串陣列,遍歷該陣列,然後將每個字串排序,排序後的字串作為 鍵 存入雜湊表,對應的...