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;
}