public static IList <IList <string> > GroupAnagrams(string[] strs) { var groupAnagrams = new List <IList <string> >(); var groupAnagramsWithKeys = new Dictionary <string, IList <string> >(); foreach (string s in strs) { string key = HashKeys.ConvertHashKeys(s); if (groupAnagramsWithKeys.ContainsKey(key)) { var anagrams = groupAnagramsWithKeys[key]; anagrams.Add(s); groupAnagramsWithKeys[key] = anagrams; } else { var anagrams = new List <string>(); anagrams.Add(s); groupAnagramsWithKeys.Add(key, anagrams); } } foreach (var value in groupAnagramsWithKeys.Values) { groupAnagrams.Add(value); } return(groupAnagrams); }
public static void RunTestcaseHashfunction() { var key = HashKeys.ConvertHashKeys("abcz"); // var key2 = HashKeys.ConvertHashKeys("xaba"); // var key3 = HashKeys.ConvertHashKeys("xbaa"); }
public static void RunTestcaseHashfunction() { var key = HashKeys.ConvertHashKeys("abc"); Debug.Assert(key.CompareTo("1-1-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0") == 0); var key2 = HashKeys.ConvertHashKeys("xaba"); Debug.Assert(key2.CompareTo("2-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0") == 0); var key3 = HashKeys.ConvertHashKeys("xbaa"); Debug.Assert(key3.CompareTo("2-1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-0-0") == 0); }