From a2633041a866a226cefa3728fa6148c8e6ced803 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Mon, 18 Nov 2024 07:34:41 +0100 Subject: [PATCH] feat: add swift implementation to lcp problem: No.25 --- .../README.md" | 35 +++++++++++++++++++ .../Solution.swift" | 30 ++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 "lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/Solution.swift" diff --git "a/lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/README.md" "b/lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/README.md" index 0fc09493e32f4..4b74397330c70 100644 --- "a/lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/README.md" +++ "b/lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/README.md" @@ -193,6 +193,41 @@ function keyboard(k: number, n: number): number { } ``` +#### Swift + +```swift +class Solution { + func keyboard(_ k: Int, _ n: Int) -> Int { + let mod = 1_000_000_007 + var c = Array(repeating: Array(repeating: 0, count: k + 1), count: n + 1) + for i in 0...n { + c[i][0] = 1 + } + + for i in 1...n { + for j in 1...k { + c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod + } + } + + var f = Array(repeating: Array(repeating: 0, count: 27), count: n + 1) + for j in 0..<27 { + f[0][j] = 1 + } + + for i in 1...n { + for j in 1..<27 { + for h in 0...min(i, k) { + f[i][j] = (f[i][j] + (f[i - h][j - 1] * c[i][h]) % mod) % mod + } + } + } + + return f[n][26] + } +} +``` + diff --git "a/lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/Solution.swift" "b/lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/Solution.swift" new file mode 100644 index 0000000000000..195504b9dbbc6 --- /dev/null +++ "b/lcp/LCP 25. \345\217\244\350\221\243\351\224\256\347\233\230/Solution.swift" @@ -0,0 +1,30 @@ +class Solution { + func keyboard(_ k: Int, _ n: Int) -> Int { + let mod = 1_000_000_007 + var c = Array(repeating: Array(repeating: 0, count: k + 1), count: n + 1) + for i in 0...n { + c[i][0] = 1 + } + + for i in 1...n { + for j in 1...k { + c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod + } + } + + var f = Array(repeating: Array(repeating: 0, count: 27), count: n + 1) + for j in 0..<27 { + f[0][j] = 1 + } + + for i in 1...n { + for j in 1..<27 { + for h in 0...min(i, k) { + f[i][j] = (f[i][j] + (f[i - h][j - 1] * c[i][h]) % mod) % mod + } + } + } + + return f[n][26] + } +} \ No newline at end of file