在Python中查找替换一个比特位对后最长的1的数量的程序
假设我们有一个二进制字符串s。如果我们可以交换字符串中至多一个字符对,我们必须找到最长连续1的结果长度。
因此,如果输入为s =“1111011111”,则输出将为9,因为我们可以交换s [4]和s [9]以获得9个连续的1。
要解决此问题,我们将遵循以下步骤:
- l:=0,cnt:=0,ans:=0
- 对于r的范围从0到s的大小,依此执行以下操作:
- 当s [r]与“0”相同时,cnt:=cnt +1,否则为0
- 如果cnt> 1,则
- 当s [l]与“0”相同时,cnt:=cnt-1,否则为0
- l:=l +1;
- ans:= ans和(r-l + 1)的最大值
- 返回ans和s中1的数量的最小值
以下是更好的理解实现的示例:
更多Python相关文章,请阅读:Python 教程
示例
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