给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
仅包含小写字母
本题需要注意字符串匹配子列表内容的条件要包括各个字符都必须在该子列表内容中,并且每个字母的数量都相同才算匹配成功。
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
rtype=[]
for string in strs:#在输入的列表中遍历字符串
if len(rtype)==0:
lstr=[]
lstr.append(string)
rtype.append(lstr)
else:
flag=0
for lstr in rtype:#便利rtype结果中的列表
chlen=0#表示该字符串匹配该列表中的字符串的长度
if len(string)==len(lstr[0]):
for ch in string:
if (ch in lstr[0]) and (string.count(ch)==lstr[0].count(ch)):
chlen+=1
continue
else:#该字符串不在该列表中
break
if chlen==len(string):#表示该字符串属于该列表
lstr.append(string)
flag=1
break#该字符串已经添加到结果列表的子列表中,无需继续循环结果列表中的子列表
if flag==0:#表示该字符串没有找到归属列表
newstr=[]
newstr.append(string)
rtype.append(newstr)
return rtype