Skip to content

Commit 2d240b6

Browse files
authored
feat: add swift implementation to lcci problem: No.10.05 (#2714)
1 parent e3c7801 commit 2d240b6

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

lcci/10.05.Sparse Array Search/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,29 @@ function findString(words: string[], s: string): number {
144144
}
145145
```
146146

147+
```swift
148+
class Solution {
149+
func findString(_ words: [String], _ s: String) -> Int {
150+
return dfs(words, s, 0, words.count - 1)
151+
}
152+
153+
private func dfs(_ words: [String], _ s: String, _ i: Int, _ j: Int) -> Int {
154+
if i > j {
155+
return -1
156+
}
157+
let mid = (i + j) >> 1
158+
let left = dfs(words, s, i, mid - 1)
159+
if left != -1 {
160+
return left
161+
}
162+
if words[mid] == s {
163+
return mid
164+
}
165+
return dfs(words, s, mid + 1, j)
166+
}
167+
}
168+
```
169+
147170
<!-- tabs:end -->
148171

149172
<!-- end -->

lcci/10.05.Sparse Array Search/README_EN.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,29 @@ function findString(words: string[], s: string): number {
150150
}
151151
```
152152

153+
```swift
154+
class Solution {
155+
func findString(_ words: [String], _ s: String) -> Int {
156+
return dfs(words, s, 0, words.count - 1)
157+
}
158+
159+
private func dfs(_ words: [String], _ s: String, _ i: Int, _ j: Int) -> Int {
160+
if i > j {
161+
return -1
162+
}
163+
let mid = (i + j) >> 1
164+
let left = dfs(words, s, i, mid - 1)
165+
if left != -1 {
166+
return left
167+
}
168+
if words[mid] == s {
169+
return mid
170+
}
171+
return dfs(words, s, mid + 1, j)
172+
}
173+
}
174+
```
175+
153176
<!-- tabs:end -->
154177

155178
<!-- end -->
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
func findString(_ words: [String], _ s: String) -> Int {
3+
return dfs(words, s, 0, words.count - 1)
4+
}
5+
6+
private func dfs(_ words: [String], _ s: String, _ i: Int, _ j: Int) -> Int {
7+
if i > j {
8+
return -1
9+
}
10+
let mid = (i + j) >> 1
11+
let left = dfs(words, s, i, mid - 1)
12+
if left != -1 {
13+
return left
14+
}
15+
if words[mid] == s {
16+
return mid
17+
}
18+
return dfs(words, s, mid + 1, j)
19+
}
20+
}

0 commit comments

Comments
 (0)