只允许摘掉一盏坏灯。摘掉位置 i 上的 0 之后,新接上的亮灯段长度,等于 i 左边紧挨着的连续 1 的个数,加上右边紧挨着的连续 1 的个数。隔着两盏及以上坏灯的两段亮灯接不到一起,因为摘掉一盏之后中间还留着坏灯。
从左往右扫一遍,记下每个位置往左连续亮了多少;再从右往左扫一遍,记下往右连续亮了多少。然后枚举每一盏坏灯,取左右两边之和的最大值。
整排都是亮灯时没有可摘的坏灯,答案就是字符串长度。整排都是坏灯时,摘掉一盏之后仍然没有亮灯,答案是 0。
给定一排灯笼,用字符串 s 表示每个灯笼的状态,其中 1 表示亮着的灯笼,0 表示坏掉的灯笼。现在要求必须摘掉一个坏掉的灯笼,摘掉后,其左右两侧的灯笼会连接在一起。需要计算摘掉一个坏灯笼后,最多能够形成多少个连续亮着的灯笼,并返回这个最大数量。
摘掉的那一盏必须是坏灯笼,亮着的灯笼不能摘,并且只摘一盏。连续亮灯指摘掉之后从左到右一段不间断的 1,坏灯不计入。若整排没有坏灯笼,则无法摘除,答案是灯笼总数。
一行字符串 s,只含字符 0 和 1。
1≤∣s∣≤105
输出一个整数,表示摘掉一盏坏灯笼后,最多能形成的连续亮灯数量。
输入
11011
输出
4
说明
中间那盏是坏灯。摘掉它以后,左右各 2 盏亮灯接在一起,形成 4 盏连续亮灯。
输入
110011
输出
2
说明
两盏坏灯挨在一起。摘掉其中一盏后,中间仍隔着另一盏坏灯,两段亮灯接不到一起。最长仍是 2。
输入
111
输出
3
说明
没有坏灯笼可以摘,三盏都亮着,答案是 3。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册