注:
本系列文章仅是作者自己学习过程中记录的笔记,是初学python用于算法求解的过程,会含有很多对于python的个人注解,用于学习。求职中解算法,我打算使用Python来进行解答,不知是否可不可以,希望能得到大佬的建议,轻喷。
目录
题目:
给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
排序法:
利用哈希表Key-Value,其中Key是:已经排过序的字母序列;Value:则是各字母异位词的列表集合
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
if len(strs)<2
return [strs]
result={}
for s in strs:
temp=''.join(sorted(s))
result[temp]=result.get(temp,[])+[s]
return list(result.values())
#-> List[List[str]]:表示返回值是一个列表,它的列表元素是字符串元素的列表。
#result={}:表示生成空字典:注意字典Key可以是元祖,但不能是列表,因为列表可变,而元组与字典同样是不可变型
#' '.join():在字符串后新添一个字符串元素,利用' '或','来进行分割
#sorted():将字符串元素进行排序,生成新的升序列表。例如:sorted(“cba”)-》[a, b ,c]
#result[temp]:将新的升序列表作为键
#.get(temp,[]):用于获取字典中某个键 temp 对应的值。如果该键不存在,返回一个空列表 []。
#.values():返回字典中的所有值
哈希表法:
利用哈希表Key-Value,同样是找各组词中的相关联的地方:此时利用的相同点是各组词的字母所组成的代码是相同的。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
if len(strs)<2:
return [strs]
result= {}
for s in strs:
count_table=[0]*26
for c in s:
count_table[ord(c)-ord('a')]+=1
key=tuple(count_table)
result[key]=result.get(key,[])+[s]
return list(result.values())
#ord():转换成unicode整数
#使用 {} 来创建字典。 使用[]来访问或修改字典中某个键对应的值。
1167

被折叠的 条评论
为什么被折叠?



