在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