给出一个字符串,仅由小写字母组成。请找出是否仅删除其中的一个字母之后, 字符串变成回文串。
标签:
给出一个字符串,仅由小写字母组成。请找出是否仅删除其中的一个字母之后, 字符串变成回文串。
输入第一行是一个整数 T,表示有 T 组数据。 每组数据占一行,每行包含一个非空字符串,字符串长度不超过
105 。
对于每组测试数据,输出一行包含一个整数 K ,表示删除字符串中第 K 个字 母后字符串变成回文串。若有多个这样的整数 K 存在,则输出其中最小的一个 整数。如果输入的字符串原本就是一个回文串,或者找不到这样的整数,则输出 "No
Solution" (不包含引号)。
3
aaab
abab
abcba
4
1
No Solution
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N = 1e5+100; char a[N]; bool judge(int x,int y) { int l=0; while(x+l<=y-l) { if( a[x+l]==a[y-l] ) l++; else return false; } return true; } int main() { int T; scanf("%d",&T); while(T--) { bool flag=0; scanf("%s",a+1); int len=strlen(a+1); for(int i=1;i<=len;i++) { if( a[i]==a[len-i+1] ) continue; int j=i; while(a[j-1]==a[i]) j--; for(int k=j;k<=i;k++) if( judge(k+1,len-k+1) ) { printf("%d\n",k); flag=1; break; } if(flag) break; if( judge(i,len-i) ) { printf("%d\n",len-i+1); flag=1; break; } break; } if(!flag) printf("No Solution\n"); } return 0; }
binshenOJ 1215-I Wanna Be A Palindrome (YY)
标签:
原文地址:http://blog.csdn.net/kalilili/article/details/44523123