在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)的最大值
- 如果s [i]与“0”相同,则
-
返回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