在Python中查找更改后的最大二进制字符串程序
假设我们有一个二进制字符串。我们可以任意多次应用以下每个操作 −
- 如果数字包含子串“00”,我们可以将其替换为“10”。
-
如果数字包含子串“10”,我们可以将其替换为“01”。
然后我们必须找到可以在任意次操作后得到的最大二进制(基于其数字值)字符串。
因此,如果输入为s =“ 001100”,则输出将为111011,因为我们可以将它们转换为如下形式(00)1100-> 101(10)0-> 1010(10)-> 10(10)01-> 100(10)1-> 1(00)011-> 111011。
为了解决这个问题,我们将遵循以下步骤:
- 长度:= s的大小
- 零:= s中的0的数量
- 如果零<2,则
- 返回s
- s:=从s左侧删除所有’1′
- leading_ones:=长度- s的大小
- leading_ones:= leading_ones + zeros- 1
- trailing_ones:=长度-leading_ones-1
- answer_left:=前导1的数量
- answer_right:=尾随1的数量
- answer_left concatenate 0 concatenate answer_right并返回
例子
让我们看以下实现以更好地理解 −
def solve(s):
length = len(s)
zeros = s.count('0')
if zeros < 2:
return s
s = s.lstrip('1')
leading_ones = length - len(s)
leading_ones += zeros - 1
trailing_ones = length - leading_ones - 1
answer_left = '1' * leading_ones
answer_right = '1' * trailing_ones
return ''.join([answer_left, '0', answer_right])
s = "001100"
print(solve(s))
输入
"001100"
输出
111011