用 Python 编写程序,在交换一对位后找出最长的 1 数
pythonserver side programmingprogramming
假设我们有一个二进制字符串 s。如果我们最多可以交换字符串中的一对字符,那么我们必须找到最长的连续 1 子字符串的结果长度。
因此,如果输入为 s = "1111011111",则输出将为 9,因为我们可以交换 s[4] 和 s[9] 以获得 9 个连续的 1。
为了解决这个问题,我们将遵循以下步骤 −
- l := 0, cnt := 0, ans := 0
- 对于 r 在 0 到 s 的大小范围内,执行
- cnt := cnt + (当 s[r] 与 "0" 相同时为 1,否则为 0)
- 如果 cnt > 1,则
- cnt := cnt - (当 s[l] 与"0"相同时为 1,否则为 0)
- l := l + 1
- ans := ans 的最大值和 (r - l + 1)
- 返回 ans 的最小值和 s 中 1 的出现次数
让我们看看下面的实现以便更好地理解 −
示例
class Solution:
def solve(self, s):
l = 0
cnt = 0
ans = 0
for r in range(len(s)):
cnt += s[r] == "0"
if cnt > 1:
cnt -= s[l] == "0"
l += 1
ans = max(ans, r - l + 1)
return min(ans, s.count("1"))
ob = Solution()
s = "1111011111"
print(ob.solve(s))
输入
"1111011111"
输出
9
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

