程序在Python中交换一对位后查找最长的1
假设我们有一个二进制字符串s。如果我们最多可以交换字符串中的一对字符,则必须找到最长连续子字符串1s的结果长度。
因此,如果输入类似于s=“1111011111”,则输出将为9,因为我们可以交换s[4]和s[9]以获得9个连续的1。
为了解决这个问题,我们将遵循以下步骤-
l:=0,cnt:=0,ans:=0
对于范围0到s大小的r,执行
cnt:=cnt-(当s[l]与“0”相同时为1,否则为0)
l:=l+1
cnt:=cnt+(当s[r]与“0”相同时为1,否则为0)
如果cnt>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
热门推荐
10 新年门口花束祝福语简短
11 盘锦结婚祝福语大全简短
12 父母生日祝福语 简短独特
13 家庭恩爱祝福语简短英文
14 高考俄语祝福语大全简短
15 虎年祝福语 诗句唯美简短
16 生日婚礼祝福语简短精辟
17 虎年喝酒拜年祝福语简短
18 教师闺蜜祝福语简短