AcWing_3768 字符串删减(区间维护)

AcWing

3768. 字符串删减

区间维护。l是不为x的左端,r是当前位置,cnt保存总共要删除的x个数。当r的位置不是x时,将l更新到r;否则lr之间都是x,如果当前它们的距离大于等于3,说明要删除的x数量cnt += 1.

#include <bits/stdc++.h>
using namespace std;
// 区间维护
int n;
string s;
int main(){
    cin >> n >> s;
    int l = -1, r = 0, cnt = 0;
    while(r <= n - 1){
        if(s[r] != 'x') l = r;
        if(r - l >= 3) cnt++;
        r++;
    }
    cout << cnt << endl;
    return 0;
}