题目描述
题目描述
题解
题解
提交记录
提交记录
中等

给你一个长度为 n 的二进制字符串 s,其中:

  • '1' 表示一个 活跃 区段。
  • '0' 表示一个 非活跃 区段。

你可以执行 最多一次操作 来最大化 s 中的活跃区段数量。在一次操作中,你可以:

  • 将一个被 '0' 包围的连续 '1' 区块转换为全 '0'
  • 然后,将一个被 '1' 包围的连续 '0' 区块转换为全 '1'

返回在执行最优操作后,s 中的 最大 活跃区段数。

注意:处理时需要在 s 的两侧加上 '1' ,即 t = '1' + s + '1'。这些加上的 '1' 不会影响最终的计数。

 

示例 1:

输入: s = "01"

输出: 1

解释:

因为没有被 '0' 包围的 '1' 区块,因此无法进行有效操作。最大活跃区段数为 1。

示例 2:

输入: s = "0100"

输出: 4

解释:

  • 字符串 "0100" → 两端加上 '1' 后得到 "101001" 。
  • 选择 "0100""101001""100001""111111" 。
  • 最终的字符串去掉两端的 '1' 后为 "1111" 。最大活跃区段数为 4。

示例 3:

输入: s = "1000100"

输出: 7

解释:

  • 字符串 "1000100" → 两端加上 '1' 后得到 "110001001" 。
  • 选择 "000100""110001001""110000001""111111111"
  • 最终的字符串去掉两端的 '1' 后为 "1111111"。最大活跃区段数为 7。

示例 4:

输入: s = "01010"

输出: 4

解释:

  • 字符串 "01010" → 两端加上 '1' 后得到 "1010101"
  • 选择 "010""1010101""1000101""1111101"
  • 最终的字符串去掉两端的 '1' 后为 "11110"。最大活跃区段数为 4。

 

提示:

  • 1 <= n == s.length <= 105
  • s[i] 仅包含 '0''1'
 
代码
代码
测试用例
测试用例
测试结果
测试结果