From 967735d7932179e47315d6101b0e3d4f5650518d Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Fri, 3 May 2024 09:21:59 +0100 Subject: [PATCH] Swift Implementation for LCCI 10.04 --- lcci/10.05.Sparse Array Search/README.md | 23 +++++++++++++++++++ lcci/10.05.Sparse Array Search/README_EN.md | 23 +++++++++++++++++++ lcci/10.05.Sparse Array Search/Solution.swift | 20 ++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 lcci/10.05.Sparse Array Search/Solution.swift diff --git a/lcci/10.05.Sparse Array Search/README.md b/lcci/10.05.Sparse Array Search/README.md index 6206c70b14a6e..64b82d430b9af 100644 --- a/lcci/10.05.Sparse Array Search/README.md +++ b/lcci/10.05.Sparse Array Search/README.md @@ -144,6 +144,29 @@ function findString(words: string[], s: string): number { } ``` +```swift +class Solution { + func findString(_ words: [String], _ s: String) -> Int { + return dfs(words, s, 0, words.count - 1) + } + + private func dfs(_ words: [String], _ s: String, _ i: Int, _ j: Int) -> Int { + if i > j { + return -1 + } + let mid = (i + j) >> 1 + let left = dfs(words, s, i, mid - 1) + if left != -1 { + return left + } + if words[mid] == s { + return mid + } + return dfs(words, s, mid + 1, j) + } +} +``` + diff --git a/lcci/10.05.Sparse Array Search/README_EN.md b/lcci/10.05.Sparse Array Search/README_EN.md index 09c0178d5736f..4b11f11e3b31c 100644 --- a/lcci/10.05.Sparse Array Search/README_EN.md +++ b/lcci/10.05.Sparse Array Search/README_EN.md @@ -150,6 +150,29 @@ function findString(words: string[], s: string): number { } ``` +```swift +class Solution { + func findString(_ words: [String], _ s: String) -> Int { + return dfs(words, s, 0, words.count - 1) + } + + private func dfs(_ words: [String], _ s: String, _ i: Int, _ j: Int) -> Int { + if i > j { + return -1 + } + let mid = (i + j) >> 1 + let left = dfs(words, s, i, mid - 1) + if left != -1 { + return left + } + if words[mid] == s { + return mid + } + return dfs(words, s, mid + 1, j) + } +} +``` + diff --git a/lcci/10.05.Sparse Array Search/Solution.swift b/lcci/10.05.Sparse Array Search/Solution.swift new file mode 100644 index 0000000000000..322a196e39079 --- /dev/null +++ b/lcci/10.05.Sparse Array Search/Solution.swift @@ -0,0 +1,20 @@ +class Solution { + func findString(_ words: [String], _ s: String) -> Int { + return dfs(words, s, 0, words.count - 1) + } + + private func dfs(_ words: [String], _ s: String, _ i: Int, _ j: Int) -> Int { + if i > j { + return -1 + } + let mid = (i + j) >> 1 + let left = dfs(words, s, i, mid - 1) + if left != -1 { + return left + } + if words[mid] == s { + return mid + } + return dfs(words, s, mid + 1, j) + } +}