1702. 修改后的最大二进制字符串
LeetCode:1702. 修改后的最大二进制字符串,难度:中等。
题解
代码
class Solution {
public:
string maximumBinaryString(string binary) {
int cnt = 0;
for(int i : binary) {
if(i == '0') {
cnt ++;
}
}
if(cnt <= 1) {
return binary;
}
string pre = "";
while(!binary.empty() && binary.front() == '1') {
pre += '1';
binary.erase(0, 1);
}
string res = "";
for(int i : binary) {
res += '1';
}
res[cnt - 1] = '0';
return pre + res;
}
};
题目
给你一个二进制字符串 binary
,它仅有 0
或者 1
组成。你可以使用下面的操作任意次对它进行修改:
- 操作 1 :如果二进制串包含子字符串
00
,你可以用10
将其替换。- 比方说,
"**00**010" -> "**10**010"
- 比方说,
- 操作 2 :如果二进制串包含子字符串
10
,你可以用01
将其替换。- 比方说,
"000**10**" -> "000**01**"
- 比方说,
请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x
对应的十进制数字大于二进制字符串 y
对应的十进制数字,那么我们称二进制字符串 x
大于二进制字符串 y
。
示例 1:
输入:binary = "000110"
输出:"111011"
解释:一个可行的转换为:
"000110" -> "000101"
"000101" -> "100101"
"100101" -> "110101"
"110101" -> "110011"
"110011" -> "111011"
示例 2:
输入:binary = "01"
输出:"01"
解释:"01" 没办法进行任何转换。
提示:
1 <= binary.length <= 10^5
binary
仅包含'0'
和'1'
。