Skip to content

Commit eb8c6e7

Browse files
authoredNov 13, 2024
feat: add swift implementation to lcp problem: No.19 (#3758)
1 parent f431398 commit eb8c6e7

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed
 

‎lcp/LCP 19. 秋叶收藏集/README.md

+29
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,35 @@ function minimumOperations(leaves: string): number {
200200
}
201201
```
202202

203+
#### Swift
204+
205+
```swift
206+
class Solution {
207+
func minimumOperations(_ leaves: String) -> Int {
208+
let n = leaves.count
209+
let inf = Int.max / 2
210+
var f = Array(repeating: [inf, inf, inf], count: n)
211+
let leavesArray = Array(leaves)
212+
213+
f[0][0] = leavesArray[0] == "r" ? 0 : 1
214+
215+
for i in 1..<n {
216+
if leavesArray[i] == "r" {
217+
f[i][0] = f[i - 1][0]
218+
f[i][1] = min(f[i - 1][0], f[i - 1][1]) + 1
219+
f[i][2] = min(f[i - 1][1], f[i - 1][2])
220+
} else {
221+
f[i][0] = f[i - 1][0] + 1
222+
f[i][1] = min(f[i - 1][0], f[i - 1][1])
223+
f[i][2] = min(f[i - 1][1], f[i - 1][2]) + 1
224+
}
225+
}
226+
227+
return f[n - 1][2]
228+
}
229+
}
230+
```
231+
203232
<!-- tabs:end -->
204233

205234
<!-- solution:end -->
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
func minimumOperations(_ leaves: String) -> Int {
3+
let n = leaves.count
4+
let inf = Int.max / 2
5+
var f = Array(repeating: [inf, inf, inf], count: n)
6+
let leavesArray = Array(leaves)
7+
8+
f[0][0] = leavesArray[0] == "r" ? 0 : 1
9+
10+
for i in 1..<n {
11+
if leavesArray[i] == "r" {
12+
f[i][0] = f[i - 1][0]
13+
f[i][1] = min(f[i - 1][0], f[i - 1][1]) + 1
14+
f[i][2] = min(f[i - 1][1], f[i - 1][2])
15+
} else {
16+
f[i][0] = f[i - 1][0] + 1
17+
f[i][1] = min(f[i - 1][0], f[i - 1][1])
18+
f[i][2] = min(f[i - 1][1], f[i - 1][2]) + 1
19+
}
20+
}
21+
22+
return f[n - 1][2]
23+
}
24+
}

0 commit comments

Comments
 (0)