Given an array of strings, group anagrams together.
For example, given: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
Return:
[
[“ate”, “eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]
给字符串组分类。
思路关键在于
char[] ca = s.ToCharArray();
Array.Sort(ca);
string keyStr = "";
foreach (char i in ca) keyStr += i.ToString();
来给字符串排序,好通过dictionary来比较。
if (strs == null || strs.Length == 0) return new List<List<string>>();
Dictionary<string, List<string>> map = new Dictionary<string, List<string>>();
foreach (string s in strs)
{
char[] ca = s.ToCharArray();
Array.Sort(ca);
string keyStr = "";
foreach (char i in ca) keyStr += i.ToString();
if (!map.ContainsKey(keyStr)) map.Add(keyStr, new List<string>());
map[keyStr].Add(s);
}
List<List<string>> res = new List<List<string>>();
foreach (string key in map.Keys)
{
res.Add(map[key]);
}
return res;