Codeforces Round #604 (Div. 2)
題目鏈接:http://codeforces.com/contest/1265/problem/A
測試樣例:
input
3
a???cb
a??bbc
a?b?c
output
ababcb
-1
acbac
思路:
碰到連續兩個非'?'相等,不滿足條件直接輸出-1。否則碰到'?'做變換,直到變爲不與前後相等。
AC代碼:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
char s[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
int len=strlen(s);
int flag=0;
for(int i=0;i<len;i++)
{
if(s[i]==s[i+1]&&s[i]!='?')
{
flag=1;
break;
}
if(s[i]=='?')
{
int num=1;
while(s[i]=='?'||s[i]==s[i-1]||s[i]==s[i+1])
s[i]=(num++)%3+97;
}
}
if(flag)
printf("-1\n");
else
printf("%s\n",s);
}
return 0;
}