是否可以删除一个字母之后变成回文串

来源:互联网 发布:mac os win10双系统 编辑:程序博客网 时间:2024/06/07 00:46

题目描述

给出一个字符串,仅由小写字母组成。请找出是否仅删除其中的一个字母之后, 字符串变成回文串。


输入

输入第一行是一个整数 T,表示有 组数据。 每组数据占一行,每行包含一个非空字符串,字符串长度不超过 10

 

输出

对于每组测试数据,输出一行包含一个整数 ,表示删除字符串中第 个字 母后字符串变成回文串。若有多个这样的整数 存在,则输出其中最小的一个 整数。如果输入的字符串原本就是一个回文串,或者找不到这样的整数,则输出 "No Solution" (不包含引号)。


样例输入

<span class="sampledata" style="font-family: monospace; font-size: 18px; white-space: pre; background-color: rgb(141, 184, 255);">3aaababababcba</span>

样例输出

<span class="sampledata" style="font-family: monospace; font-size: 18px; white-space: pre; background-color: rgb(141, 184, 255);">41No Solution</span>

int main(){    int t;    cin>>t;    while(t--){    string x;    cin>>x;    int l=0,r=x.length()-1;    int minn=100000000;    while(l<r){    if(x[l]!=x[r]){if(x[l+1]==x[r]){int u=0;int p=l+1,q=r;while(p<q){if(x[p]!=x[q]){u=1;break;}p++;q--;}if(u==0){p=l;                        //这里注意while(p-1>=0&&x[p-1]==x[p]) //这里注意p--;                //这里注意minn=min(minn,p);}}if(x[l]==x[r-1]){int u=0;int p=l,q=r-1;while(p<q){if(x[p]!=x[q]){u=1;break;}p++;q--;}if(u==0)minn=min(minn,r);}break;    }    l++;    r--;    }    if(minn==100000000)    cout<<"No Solution"<<endl;    else    cout<<minn+1<<endl;    }return 0;}/*2aabbaaaaabbaaa*/


0 0
原创粉丝点击