给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改:
操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。
比方说, "00010" -> "10010"
操作 2 :如果二进制串包含子字符串 "10" ,你可以用 "01" 将其替换。
比方说, "00010" -> "00001"
请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x 对应的十进制数字大于二进制字符串 y 对应的十进制数字,那么我们称二进制字符串 x 大于二进制字符串 y 。示例 1:
输入:binary = "000110"
输出:"111011"
解释:一个可行的转换为:
"000110" -> "000101"
"000101" -> "100101"
"100101" -> "110101"
"110101" -> "110011"
"110011" -> "111011"1.贪心,关键是理解规则的意思,通过这个规则我们其实可以把0都放到一起,然后最后只剩下一个0
class Solution:
def maximumBinaryString(self, binary: str) -> str:
n=len(binary)
cnt0=0
start0=-1
for i in range(len(binary)):
if binary[i]=='0':
cnt0+=1
if start0==-1:
start0=i
if start0==-1:return binary
return '1'*(start0+cnt0-1)+'0'+'1'*(n-start0-cnt0)