Group Anagrams leetcode (M)
class Solution {
func groupAnagrams(_ strs: [String]) -> [[String]] {
var memo: [[Int]: [String]] = [:]
for s in strs {
var array: [Int] = Array(repeating: 0, count: 26)
let zeroIndex = Unicode.Scalar(String("a"))!.value
for c in s {
let offset = Int(Unicode.Scalar(String(c))!.value - zeroIndex)
array[offset] += 1
}
var value = memo[array] ?? []
value.append(s)
memo[array] = value
}
return memo.values.map { return $0 }
}
}