1 /*
2 注意:
3 题非常简单,读题有误
4 不是求最长回文子串
5 而是求 原串的一个子串 ,这个子串反转后还是原串的子串
6 相当于求原串和他的反转串 的最长公共子序列(连续)
7 */
8
9 #include<iostream>
10 #include<cstdio>
11 #include<cstdlib>
12 #include<cstring>
13 using namespace std;
14
15 char ch[60];
16 char tc[60];
17
18 int main()
19 {
20 int i,j,k,ti,tj,iscase,len,max,m,n;
21 scanf("%d",&iscase);
22 while(iscase--)
23 {
24 scanf("%s",tc);
25
26 len=strlen(tc);
27 for(i=0,j=0;i<len;++i)
28 if(tc[i]!=' ')ch[j++]=tc[i];
29 ch[j]='\0';
30 len=strlen(ch);
31
32 for(i=0;i<len;++i)
33 tc[i]=ch[len-i-1];
34 tc[len]='\0';
35 ti=tj=0;
36 max=1;
37
38 for(i=0;i<len;++i)
39 for(j=0;j<len;++j)
40 {
41 for(m=i,n=j;m<len&&n<len&&ch[m]==tc[n];m++,n++);
42 if(m-i>max)
43 {
44 max=m-i;
45 ti=i;
46 tj=m-1;
47 }
48 }
49
50 for(i=ti;i<=tj;++i)
51 printf("%c",ch[i]);
52 printf("\n");
53 }
54 return 0;
55 }