diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 092. \347\277\273\350\275\254\345\255\227\347\254\246/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 092. \347\277\273\350\275\254\345\255\227\347\254\246/README.md" index 799a58460f4de..eff3dc462254c 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 092. \347\277\273\350\275\254\345\255\227\347\254\246/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 092. \347\277\273\350\275\254\345\255\227\347\254\246/README.md" @@ -180,6 +180,35 @@ function minFlipsMonoIncr(s: string): number { } ``` +#### Swift + +```swift +class Solution { + func minFlipsMonoIncr(_ s: String) -> Int { + let n = s.count + var left0 = 0, right0 = 0 + let chars = Array(s) + + for char in chars { + if char == "0" { + right0 += 1 + } + } + + var ans = min(right0, n - right0) + + for i in 1...n { + let x = chars[i - 1] == "0" ? 0 : 1 + right0 -= x ^ 1 + left0 += x ^ 1 + ans = min(ans, i - left0 + right0) + } + + return ans + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 092. \347\277\273\350\275\254\345\255\227\347\254\246/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 092. \347\277\273\350\275\254\345\255\227\347\254\246/Solution.swift" new file mode 100644 index 0000000000000..9a21105516927 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 092. \347\277\273\350\275\254\345\255\227\347\254\246/Solution.swift" @@ -0,0 +1,24 @@ +class Solution { + func minFlipsMonoIncr(_ s: String) -> Int { + let n = s.count + var left0 = 0, right0 = 0 + let chars = Array(s) + + for char in chars { + if char == "0" { + right0 += 1 + } + } + + var ans = min(right0, n - right0) + + for i in 1...n { + let x = chars[i - 1] == "0" ? 0 : 1 + right0 -= x ^ 1 + left0 += x ^ 1 + ans = min(ans, i - left0 + right0) + } + + return ans + } +} \ No newline at end of file