给你一个二进制字符串 binary
,它仅有 0
或者 1
组成。你可以使用下面的操作任意次对它进行修改:
- 操作 1 :如果二进制串包含子字符串
"00"
,你可以用"10"
将其替换。- 比方说,
"00010" -> "10010"
- 比方说,
- 操作 2 :如果二进制串包含子字符串
"10"
,你可以用"01"
将其替换。- 比方说,
"00010" -> "00001"
- 比方说,
请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x
对应的十进制数字大于二进制字符串 y
对应的十进制数字,那么我们称二进制字符串 x
大于二进制字符串 y
。
输入: binary = "000110" 输出: "111011" 解释: 一个可行的转换为: "000110" -> "000101" "000101" -> "100101" "100101" -> "110101" "110101" -> "110011" "110011" -> "111011"
输入: binary = "01" 输出: "01" 解释: "01" 没办法进行任何转换。
1 <= binary.length <= 105
binary
仅包含'0'
和'1'
。
impl Solution {
pub fn maximum_binary_string(binary: String) -> String {
let count0 = binary.bytes().filter(|&b| b == b'0').count();
let count1 = binary.bytes().take_while(|&b| b == b'1').count();
let mut binary = binary.into_bytes();
if count0 > 1 {
binary = vec![b'1'; binary.len()];
binary[count0 + count1 - 1] = b'0';
}
String::from_utf8(binary).unwrap()
}
}