1. 解题思路
这一题是题目3501. Maximize Active Section with Trade II,可惜后者我没有搞定……
这个简易版本的题目本身倒是并不复杂,其实说白就是就是在原本的1的基础上加上任意两个连续的0的子串,然后求最大值。亦即两个连续的0的子串的最大值,我们求一下即可,倒是并没啥难度。
2. 代码实现
给出python代码实现如下:
class Solution:
def maxActiveSectionsAfterTrade(self, s: str) -> int:
pre = "1"
cnt = 0
mem = []
for i, ch in enumerate(s):
if ch == pre:
cnt += 1
else:
if pre == "0":
mem.append(cnt)
cnt = 1
pre = ch
if pre == "0":
mem.append(cnt)
n = len(mem)
ones = Counter(s)["1"]
ans = ones
for i in range(n-1):
ans = max(ans, ones + mem[i] + mem[i+1])
return ans
提交代码评测得到:耗时914ms,占用内存18.8MB。