在Python中进行一次0翻转后,在二进制字符串中查找最长子串长度为1的程序
假设我们有一个二进制字符串s。我们最多可以将一个“0”翻转为“1”,我们必须找到最长连续子串的长度1。
所以,如果输入像s="1010110001",那么输出将是4,就好像我们翻转索引3处的零,然后我们得到字符串"1011110001",这里1s的最长子串的长度是4.
示例
让我们看看以下实现以获得更好的理解-
def solve(s):
n = len(s)
ans = ones = left = right = 0
while right < n:
if s[right] == "1":
ones += 1
while right - left + 1 - ones > 1:
remove = s[left]
if remove == "1":
ones -= 1
left += 1
ans = max(ans, right - left + 1)
right += 1
return ans
s = "1010110001"
print(solve(s))输入
"1010110001"输出结果
4