Skip to content

Commit 67f6f2f

Browse files
authored
feat: add swift implementation to lcci problem: No.17.05 (#2773)
1 parent bde04f3 commit 67f6f2f

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

lcci/17.05.Find Longest Subarray/README.md

+23
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,29 @@ function findLongestSubarray(array: string[]): string[] {
158158
}
159159
```
160160

161+
```swift
162+
class Solution {
163+
func findLongestSubarray(_ array: [String]) -> [String] {
164+
var vis: [Int: Int] = [0: -1]
165+
var s = 0, mx = 0, k = 0
166+
167+
for i in 0..<array.count {
168+
s += array[i].first!.isLetter ? 1 : -1
169+
if let j = vis[s] {
170+
if mx < i - j {
171+
mx = i - j
172+
k = j + 1
173+
}
174+
} else {
175+
vis[s] = i
176+
}
177+
}
178+
179+
return Array(array[k..<(k + mx)])
180+
}
181+
}
182+
```
183+
161184
<!-- tabs:end -->
162185

163186
<!-- end -->

lcci/17.05.Find Longest Subarray/README_EN.md

+23
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,29 @@ function findLongestSubarray(array: string[]): string[] {
167167
}
168168
```
169169

170+
```swift
171+
class Solution {
172+
func findLongestSubarray(_ array: [String]) -> [String] {
173+
var vis: [Int: Int] = [0: -1]
174+
var s = 0, mx = 0, k = 0
175+
176+
for i in 0..<array.count {
177+
s += array[i].first!.isLetter ? 1 : -1
178+
if let j = vis[s] {
179+
if mx < i - j {
180+
mx = i - j
181+
k = j + 1
182+
}
183+
} else {
184+
vis[s] = i
185+
}
186+
}
187+
188+
return Array(array[k..<(k + mx)])
189+
}
190+
}
191+
```
192+
170193
<!-- tabs:end -->
171194

172195
<!-- end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
func findLongestSubarray(_ array: [String]) -> [String] {
3+
var vis: [Int: Int] = [0: -1]
4+
var s = 0, mx = 0, k = 0
5+
6+
for i in 0..<array.count {
7+
s += array[i].first!.isLetter ? 1 : -1
8+
if let j = vis[s] {
9+
if mx < i - j {
10+
mx = i - j
11+
k = j + 1
12+
}
13+
} else {
14+
vis[s] = i
15+
}
16+
}
17+
18+
return Array(array[k..<(k + mx)])
19+
}
20+
}

0 commit comments

Comments
 (0)