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

示例

让我们看看下面的实现,以便更好地理解。

Open Compiler
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"

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

8

更新于:2021年10月11日

292 次浏览

开始您的职业生涯

通过完成课程获得认证

开始
广告