题面大意
给你nnn个字符,只由大写字母NNN和OOO组成,每次可以选择kkk个连续的字符,将选中的各个字符变成NNN。
题意分析
找到最小的操作数,将所有的OOO变成NNN
解题思路
每次选择kkk个字符,如果从iii开始选,则可变的范围就是[i,i+k−1][i,i+k-1][i,i+k−1],考虑只有OOO需要变成NNN,我们可以找到第一个为OOO的字符,从这个字符开始选择kkk个字符变成NNN,然后继续找到下一个OOO。
那么实际上每次我们只需要维护一个值rrr,它表示≤r\leq r≤r的字符都能变成NNN
时间复杂度解析
我们只需要遍历一次字符即可,复杂度为O(n)O(n)O(n)
代码演示