从Leetcode 每日一题练习继续讨论:
2914. 使二进制字符串变美丽的最少修改次数
2914. Minimum Number of Changes to Make Binary String Beautiful
题解
本题可使用贪心,考虑到只要求每个分割出来的偶数长度字符串中只包含0或者1,且字符串的总长为偶数。则只需记录当前连续出现的字符是0还是1并记录该字符连续出现的次数,遇到另外一个字符时,如果当前出现的次数为奇数则将另外一个字符变为当前字符,将次数+1变为偶数,继续向后计数。若遇到另外一个字符时当前出现次数为偶数则改变当前记录字符并从头开始计数。如此反复直到达到字符串结尾。
代码
class Solution {
public:
int minChanges(string s) {
int count = 0;
char current = s[0];
int result = 0;
for (char ch : s){
if (current == ch){
count++;
}else{
if (count % 2 == 1){
result++;
count++;
}else{
count = 1;
current = ch;
}
}
}
return result;
}
};