文章目录
- 1. 题目
- 2. 解题
1. 题目
描述
定义若一个字符串的每个字符均为’1’,则该字符串称为完美字符串。
给定一个只由’0’和’1’组成的字符串s和一个整数k。
你可以对字符串进行任意次以下操作
- 选择字符串的一个区间长度不超过k的区间
[l, r]
,将区间内的所有’0’修改成’1’,将区间内所有的’1’修改成’0’。
你最少需要多少次操作,可以将字符串s修改成一个完美字符串
1≤len(s)≤100,000;1≤k≤100,000示例
样例1:
输入:
s="10101"
k=2
输出:
2
解释:
1. 修改 [1,2] ==> "11001"
2. 修改 [2,3] ==> "11111"样例2:
输入:
s="00000"
k=3
输出:
2
解释:
1. 修改 [0,2] ==> "11100"
2. 修改 [3,4] ==> "11111"
来源:https://tianchi.aliyun.com/oj/15179470890799741/85251759933690468
2. 解题
class Solution {
public:/*** @param s: string need to be transformed* @param k: minimum char can be transformed in one operation* @return: minimum times of transforming all char into '1'*/int perfectString(string &s, int k) {// Write your code here.int sum = 0, t = k;for(int i = 0; i < s.size(); i++){if(s[i] == '0')//遇见 0 要改为1{if(t == k)sum++;t--;}else//遇见 1 要重置{t = k;}if(t == 0)t = k;}return sum;}
};
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!