如果一个二进制字符串,是以一些 0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的,那么该字符串是 单调递增 的。
给你一个二进制字符串 s,你可以将任何 0 翻转为 1 或者将 1 翻转为 0 。
返回使 s 单调递增的最小翻转次数。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/flip-string-to-monotone-increasing
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
简单dp,空间复杂度可以优化
class Solution {
public:
int minFlipsMonoIncr(string s) {
int dp0 = 0, dp1 = 0;
for (char c: s) {
int t_dp0 = dp0;
int t_dp1 = min(dp0, dp1);
if (c == '1') t_dp0++;
else t_dp1++;
dp0 = t_dp0;
dp1 = t_dp1;
}
return min(dp0, dp1);
}
};