题解:AT_abc394_c [ABC394C] Debug

· · 题解

首先暴力是肯定会 T 飞的。

考虑什么时候会产生新的 WA,可以发现 AC 的第一个字符是 A,所以如果前面还有一个 W 就会产生新的 WA。如果前面有多个 W 就会不断产生 WA 然后改为 AC

所以找到一个 A 就往前找连续的 W,并将第一个 W 改为 A,其他的 WA 都改为 C 即可。

Code

#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>s;n=s.size();
    for(int i=0;i<n;i++){
        if(s[i]=='A'&&s[i-1]=='W'){
            int j=i;
            while(s[j-1]=='W'){
                s[j]='C';
                j--;
            }
            s[j]='A';
        }
    }
    cout<<s;
    return 0;
}