褪色的回文,为什么我得到错误的判决?

Faded Palindromes,why i'm getting wrong verdict?

本文关键字:错误 回文 为什么 褪色      更新时间:2023-10-16

字符串中褪色的字符用'表示。',而其他字符则是小写拉丁字母,即['a'-'z']。可以包含一个或多个褪色的字符串。我想通过用小写拉丁字母填充每个褪色字符('.')来构建字典上最小的回文。我试了3个多小时,但我得到了错误的判决。我不能解决我的问题。有人能帮我吗?

#include<bits/stdc++.h>
using namespace std;
int main()
{
    //freopen("a.in", "r", stdin);
    //freopen("a.out", "w", stdout);
    int test;
    string s;
    cin>>test;
    while(test--)
    {
        cin>>s;
        for(int i=0; i<s.size()/2; i++)
        {
            if(s[i]=='.')
            {
                if(s[i]==s[s.size()-1-i])
                {
                    s[i]='a';
                    s[s.size()-1-i]='a';
                }
            }
        }
        if(s.size()%2) s[s.size()/2]='a';
        //cout<<"s = "<<s<<endl;

        for(int i=0; i<s.size()/2; i++)//left string checking
        {
            if(s[i]=='.')
            {
                s[i]=s[s.size()-1-i];
            }
        }
        for(int i=s.size()-1,k=0; i>s.size()/2; i--,k++)//Right string checking
        {
            if(s[i]=='.')
            {
                s[i]=s[k];
            }
        }
        //cout<<" ss = "<<s<<endl;
        bool flag=true;
        for(int i=0; i<s.size()/2; i++)
        {
            if(s[i]!=s[s.size()-1-i])
            {
                flag=false;
            }
        }
        if(flag==false) cout<<"-1"<<endl;
        else cout<<s<<endl;
    }
}

IDEOne链接

更正行::66你的中间字符总是'a'。我们应该把字符"a",当中间位置是褪色字符。也许他能帮到你。