321. 完美字符串
定义若一个字符串的每个字符均为'1',则该字符串称为
完美字符串
。给定一个只由'0'和'1'组成的字符串
s
和一个整数
k
。你可以对字符串进行任意次以下操作
-
选择字符串的一个区间长度不超过k的区间[l, r],将区间内的所有'0'修改成'1',将区间内所有的'1'修改成'0'。
你最少需要多少次操作,可以将字符串s修改成一个
完美字符串
样例
样例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"
注意事项
1 \leq len(s) \leq 100\,000
1
≤
l
e
n
(
s
)
≤
1
0
0
0
0
0
1 \leq k \leq 100\,000
1
≤
k
≤
1
0
0
0
0
0
public class Solution {
/**
* @param s: string need to be transformed
* @param k: minimum char can be transformed in one operation
* @return: minimum times to transform all char into '1'
*/
public int perfectString(String s, int k) {
int sum=0;
int flag=0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i)=='0'){
flag++;
if (flag==k){
flag=0;
sum++;
}
}else {
if (flag!=0) {
sum++;
}
flag=0;
}
}
if (flag!=0) {
sum++;
}
return sum;
}
}