-
Notifications
You must be signed in to change notification settings - Fork 215
/
Copy pathMedium_049_Anagrams.swift
48 lines (37 loc) · 1.01 KB
/
Medium_049_Anagrams.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
https://leetcode.com/problems/anagrams/
#49 Anagrams
Level: medium
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"],
Return:
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
]
Note: All inputs will be in lower-case.
Inspired by @zxyperfect at https://leetcode.com/discuss/18664/sharing-my-very-concise-solution-with-explanation
*/
import Foundation
struct Medium_049_Anagrams {
private static func helper(_ str: String) -> String {
var arr = Array(str)
arr.sort()
return String(arr)
}
static func anagrams(_ strings: [String]) -> [[String]] {
var dict: [String: [String]] = [:]
for s in strings {
let sortedS = helper(s)
var arr = dict[sortedS]
if let _ = arr {
arr!.append(s)
} else {
arr = [s]
}
dict[sortedS] = arr!
}
return Array(dict.values)
}
}