在Python中查找更改后的最大二进制字符串程序

在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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程