题目的需求:将
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:[["ate", "eat","tea"], ["nat","tan"],["bat"]]
思路:首先将每个字符串按照asc码进行排序,然后eat 就成了aet,
以aet为key, eat,tea,构成的list为value进行返回即可。
public
static
List<List<String>> groupAnagrams(String[]
strs
) {
List<List<String>>
listb
=
new
LinkedList<List<String>>();
Map<String,List<String>>
map
=
new
HashMap<String,List<String>>();
for
(
int
i
= 0;
i
<
strs
.
length
;
i
++) {
char
[]
charArray
=
strs
[
i
].toCharArray();
Arrays.sort(
charArray
);
String
string
=
new
String(
charArray
);
System.
out
.println(
string
);
if
(
map
.containsKey(
string
)){
List<String>
list
=
map
.get(
string
);
list
.add(
strs
[
i
]);
}
else
{
LinkedList<String>
linkedList
=
new
LinkedList<String>();
linkedList
.add(
strs
[
i
]);
map
.put(
string
,
linkedList
);
}
}
for
(String
key
:
map
.keySet()) {
listb
.add(
map
.get(
key
));
}
return
listb
;
}