在Python中拆分二进制字符串为两部分以找到最大得分的程序

在Python中拆分二进制字符串为两部分以找到最大得分的程序

假设我们有一个二进制字符串s。现在让我们考虑一种操作,其中我们将字符串拆分为两个非空子字符串s1和s2。此拆分的得分是s1中的“0”的数量之和和s2中的“1”的数量之和。我们必须找到可以获得的最大分数。

因此,如果输入如s =“011001100111”,则输出将为8,因为我们可以将字符串拆分为“01100”+“110111”。然后,得分为3 + 5 = 8。

为了解决这个问题,我们将遵循以下步骤 –

  • ones:s中“1”的数量

  • zeros:0

  • ans:0

  • 对于范围为0到s大小-2的i,进行以下操作

    • 如果s [i]与“0”相同,则
      • zeros:zeros + 1
    • 否则,则
      • ones:ones-1
    • ans:ans和(ones + zeros)的最大值

  • 返回ans

示例

让我们看以下实现以获得更好的理解

def solve(s):
   ones = s.count("1")
   zeros = 0
   ans = 0
   for i in range(len(s) - 1):
      if s[i] == "0":
         zeros += 1
      else:
         ones -= 1
      ans = max(ans, ones + zeros)
   return ans

s = "011001100111"
print(solve(s))

输入

"011001100111"

输出

8

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程