[LeetCode] 49. Group Anagrams

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

Note:

  • All inputs will be in lowercase.

  • The order of your output does not matter.

Analyse:

Solution:

class Solution {

    func groupAnagrams(_ strs: [String]) -> [[String]] {
        var copyStr = strs;
        var output:[[String]]  = [];
        var sortedStrs:[String:[String]] = [:];
        
        var i = 0;
        while(i < copyStr.count) {
            var str = copyStr[i];
            str = String(str.sorted{$0 < $1})
            
            if(sortedStrs[str] != nil) {
                var strs: [String] = sortedStrs[str]!;
                strs.append(copyStr[i]);
                sortedStrs[str] = strs;
            }
            else {
                sortedStrs[str] = [copyStr[i]]; 
            }
                
            i += 1;
        }

        for xxx in sortedStrs {
            output.append(xxx.value);
        }
        
        return output;
    } 
}

Last updated