题目链接:LeetCode - 1702. 修改后的最大二进制字符串
解析
详细题解:贪心,简洁写法(Python/Java/C++/Go/JS/Rust)
思路很牛b。
简单来说我们需要想办法将0配对,将其变为10,对于单个的0,我们需要用10->01这个操作将后面的0冒泡到前面进行配对。
AC CODE
char* maximumBinaryString(char* binary) {
int n = strlen(binary);
int cnt = 0;
int mark = 0;
for(int i = 0; i < n; ++i){
if(binary[i] == '0') mark = 1;
if(mark && binary[i] == '1') cnt++;
}
if(cnt == 0 && mark == 0) return binary;
for(int i = 1; i <= n; ++i){
if(i == n - cnt) binary[i - 1] = '0';
else binary[i - 1] = '1';
}
return binary;
}