Skip to content

Commit 1984167

Browse files
authored
feat: add swift implementation to lcof2 problem: No.092 (doocs#3478)
1 parent d176e42 commit 1984167

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

lcof2/剑指 Offer II 092. 翻转字符/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,35 @@ function minFlipsMonoIncr(s: string): number {
180180
}
181181
```
182182

183+
#### Swift
184+
185+
```swift
186+
class Solution {
187+
func minFlipsMonoIncr(_ s: String) -> Int {
188+
let n = s.count
189+
var left0 = 0, right0 = 0
190+
let chars = Array(s)
191+
192+
for char in chars {
193+
if char == "0" {
194+
right0 += 1
195+
}
196+
}
197+
198+
var ans = min(right0, n - right0)
199+
200+
for i in 1...n {
201+
let x = chars[i - 1] == "0" ? 0 : 1
202+
right0 -= x ^ 1
203+
left0 += x ^ 1
204+
ans = min(ans, i - left0 + right0)
205+
}
206+
207+
return ans
208+
}
209+
}
210+
```
211+
183212
<!-- tabs:end -->
184213

185214
<!-- solution:end -->
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
func minFlipsMonoIncr(_ s: String) -> Int {
3+
let n = s.count
4+
var left0 = 0, right0 = 0
5+
let chars = Array(s)
6+
7+
for char in chars {
8+
if char == "0" {
9+
right0 += 1
10+
}
11+
}
12+
13+
var ans = min(right0, n - right0)
14+
15+
for i in 1...n {
16+
let x = chars[i - 1] == "0" ? 0 : 1
17+
right0 -= x ^ 1
18+
left0 += x ^ 1
19+
ans = min(ans, i - left0 + right0)
20+
}
21+
22+
return ans
23+
}
24+
}

0 commit comments

Comments
 (0)