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
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP