给定一个由 N 个字符组成的字符串 S返回可以插入到 S 中包括 S 的前端和末尾的字母 a 的最大数量使得结果字符串不包含三个连续字母a。
算法思路:
- 遍历整个字符串,记录当前连续的'a'的数量和最大的连续'a'的数量(即前面没有出现连续三个'a'的情况下最多可以插入几个'a')
- 如果当前字符不是'a',则将当前连续的'a'的数量重置为0
- 如果当前字符是'a',则将当前连续的'a'的数量加1,并更新最大的连续'a'的数量
- 最后判断最大的连续'a'的数量是否小于3,如果是则可以在前端和末尾插入'a'使得结果字符串不包含三个连续字母'a',插入的数量为 $2\times(\text{最大连续'a'的数量}+1)$,否则不能插入'a'。
时间复杂度:$O(N)$
Python3 代码实现:
原文地址: https://www.cveoy.top/t/topic/bkYQ 著作权归作者所有。请勿转载和采集!