-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0017_letter-combinations-of-a-phone-number.swift
50 lines (43 loc) · 1.24 KB
/
0017_letter-combinations-of-a-phone-number.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
49
50
import Foundation
class Solution {
let table: [String: [String]]
init() {
self.table = [
"2": ["a", "b", "c"],
"3": ["d", "e", "f"],
"4": ["g", "h", "i"],
"5": ["j", "k", "l"],
"6": ["m", "n", "o"],
"7": ["p", "q", "r", "s"],
"8": ["t", "u", "v"],
"9": ["w", "x", "y", "z"],
]
}
func letterCombinations(_ digits: String) -> [String] {
var arrStr: [String] = []
var strIndex = digits.startIndex
while strIndex < digits.endIndex {
let c = digits[strIndex]
let old = arrStr
let values = self.table[String(c)]
arrStr = []
if old.count == 0 {
for value in values ?? [] {
arrStr.append(value)
}
} else {
for str in old {
for value in values ?? [] {
arrStr.append(str + value)
}
}
}
strIndex = digits.index(strIndex, offsetBy: 1)
}
return arrStr
}
}
let digits = "2"
let solution = Solution()
let result = solution.letterCombinations(digits)
print(result)