[Swift]LeetCode926. 将字符串翻转到单调递增 | Flip String to
A string of? We are given a string? Return the minimum number of flips to make? ?Example 1: Input: "00110"
Output: 1 Explanation: We flip the last digit to get 00111.
Example 2: Input: "010110"
Output: 2 Explanation: We flip to get 022222,or alternatively 000111.
Example 3: Input: "00011000"
Output: 2 Explanation: We flip to get 00000000.
?Note:
如果一个由? 我们给出一个由字符? 返回使? ?示例 1: 输入:"00110" 输出:1 解释:我们翻转最后一位得到 00111. 示例 2: 输入:"010110" 输出:2 解释:我们翻转得到 022222,或者是 000111。 示例 3: 输入:"00011000" 输出:2 解释:我们翻转得到 00000000。 ?提示:
?116ms 1 class Solution { 2 func minFlipsMonoIncr(_ S: String) -> Int { 3 var arr:[Character] = [Character]() 4 for char in S.characters 5 { 6 arr.append(char) 7 } 8 let len = S.count 9 //声明数组 10 var ct:[Int] = [Int](repeating: 0,count: len + 1) 11 var x:Int = 0 12 for i in 0...len 13 { 14 ct[i] += x 15 if i < len && arr[i] == "1" 16 { 17 x += 1 18 } 19 } 20 x = 0 21 for i in (0...len).reversed() 22 { 23 ct[i] += x 24 if i > 0 && arr[i - 1] == "0" 25 { 26 x += 1 27 } 28 } 29 var res = 999999999 30 for i in 0...len 31 { 32 res = min(res,ct[i]) 33 } 34 return res 35 } 36 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |