思路:移动的贪心题
之后记住几个结论:
如果规定:10->01(反转) 即规定了所有的0可以向左移动,但是不能向右移动
如果规定:01->10(反转) 即规定了所有的0可以向右移动,但是不能向左移动
如果规定:00->10 即0…0可以转化为0…1的形式
这道题的思路:
step1:如果s中0的个数小于2则return
step2:由于该题中0只能向左移动,此时s中0的个数大于2,后面的0都移动到第一组0的后面,然后把最后的0改为1即可。
class Solution {
public:
string maximumBinaryString(string s) {
int n = s.size();
int m = count_if(s.begin(), s.end(), [](char ch){return ch == '0';});
if (m < 2) return s;
int index = s.find('0');
fill(s.begin(), s.end(), '1');
s[index + m - 1] = '0';
return s;
}
};