https://codeforces.com/contest/1379/problem/A
直接暴力就行,abacaba只能出现一次,然后枚举每个位置,从位置数七个,如果这七个位置有?就放上,其他的?全部放z,遍历一遍判断。
#include<bits/stdc++.h>
#define ll long long
#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=1e2+5,INF=0x3f3f3f3f;
string s,q="abacaba";
bool check(string a)
{
int sum=0;
for(int i=0;i<=a.size()-7;i++)
if(a.substr(i,7)==q)
sum++;
if(sum==1)
return true;
else return false;
}
int main()
{
ios;
int t;
cin>>t;
while(t--)
{
int n;
int ok=0;
cin>>n>>s;
for(int i=0;i<=s.size()-7;i++)
{
string a=s;
for(int j=0;j<7;j++)
if(a[i+j]=='?')
a[i+j]=q[j];
for(int i=0;i<a.size();i++)
if(a[i]=='?')
a[i]='z';
if(check(a))
{
ok=1;
cout<<"Yes"<<endl;
cout<<a<<endl;
break;
}
}
if(ok==0)
cout<<"No"<<endl;
}
return 0;
}