Skip to content

Commit 038e542

Browse files
authored
feat: add swift implementation to lcp problem: No.25 (#3774)
1 parent a62e79a commit 038e542

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

lcp/LCP 25. 古董键盘/README.md

+35
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,41 @@ function keyboard(k: number, n: number): number {
193193
}
194194
```
195195

196+
#### Swift
197+
198+
```swift
199+
class Solution {
200+
func keyboard(_ k: Int, _ n: Int) -> Int {
201+
let mod = 1_000_000_007
202+
var c = Array(repeating: Array(repeating: 0, count: k + 1), count: n + 1)
203+
for i in 0...n {
204+
c[i][0] = 1
205+
}
206+
207+
for i in 1...n {
208+
for j in 1...k {
209+
c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod
210+
}
211+
}
212+
213+
var f = Array(repeating: Array(repeating: 0, count: 27), count: n + 1)
214+
for j in 0..<27 {
215+
f[0][j] = 1
216+
}
217+
218+
for i in 1...n {
219+
for j in 1..<27 {
220+
for h in 0...min(i, k) {
221+
f[i][j] = (f[i][j] + (f[i - h][j - 1] * c[i][h]) % mod) % mod
222+
}
223+
}
224+
}
225+
226+
return f[n][26]
227+
}
228+
}
229+
```
230+
196231
<!--- tabs:end -->
197232

198233
<!-- solution:end -->
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
func keyboard(_ k: Int, _ n: Int) -> Int {
3+
let mod = 1_000_000_007
4+
var c = Array(repeating: Array(repeating: 0, count: k + 1), count: n + 1)
5+
for i in 0...n {
6+
c[i][0] = 1
7+
}
8+
9+
for i in 1...n {
10+
for j in 1...k {
11+
c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod
12+
}
13+
}
14+
15+
var f = Array(repeating: Array(repeating: 0, count: 27), count: n + 1)
16+
for j in 0..<27 {
17+
f[0][j] = 1
18+
}
19+
20+
for i in 1...n {
21+
for j in 1..<27 {
22+
for h in 0...min(i, k) {
23+
f[i][j] = (f[i][j] + (f[i - h][j - 1] * c[i][h]) % mod) % mod
24+
}
25+
}
26+
}
27+
28+
return f[n][26]
29+
}
30+
}

0 commit comments

Comments
 (0)