题目链接:Beautiful String - CodeForces 1265A - Virtual Judge
题意:给出t组测试,每组字符串由a,b,c,?四种字符组成,其中"?"可以用a,b,c随意替代,输出是否有可能使该字符串变为无相邻字符的字符串,若可以输出Yes后下一行需输出该字符。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int t;
cin>>t;
while(t--)
{
string s;
cin>>s;
int i,cnt=0,l=s.length();
for( i=0;i<l;i++)
{
if(s[i]==s[i+1]&&s[i]!='?')//如果相同跳出循环
break;
else if(s[i]=='?')
while(s[i]==s[i-1]||s[i]==s[i+1]||s[i]=='?') s[i]='a'+cnt%3,cnt++;
//要做到在该字符串为‘?’的情况下变后字符前后不同,循环就可以解决。
}
if(i<l) puts("-1");
else cout<<s<<endl;
}
return 0;
}