Python 中一个程序,在一次 0 翻转后,找出二进制字符串中最长的 1 子串的长度
pythonserver side programmingprogramming更新于 2026/1/23 8:12:17
假设我们有一个二进制字符串 s。我们最多可以翻转一个"0"到"1",我们必须找到最长连续 1 子串的长度。
因此,如果输入为 s = "1010110001",则输出将为 4,就好像我们翻转索引 3 处的零一样,然后我们得到字符串"1011110001",这里 1 的最长子串的长度为 4。
为了解决这个问题,我们将遵循以下步骤 −
- n := s 的大小
- ans := 0, ones := 0, left := 0, right := 0
- while right < n,执行
- 如果 s[right] 与"1"相同,则
- ones := those + 1
- 当 right - left + 1 - those > 1 时,执行
- remove := s[left]
- 如果 remove 与"1"相同,则
- ones := those - 1
- left := left + 1
- ans := ans 和 (right - left + 1) 的最大值
- right := right + 1
- 如果 s[right] 与"1"相同,则
- 返回 ans
示例
让我们看看下面的实现以便更好地理解 −
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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

