13B:回文子串

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

给定一个字符串,寻找并输出字符串中最长回文子串。回文串即从左到右和从右到左读都一样的字符串。
如果字符串中包含多个回文子串,则返回第一个。

输入
第一行是整数n,字符串的个数(n < 20)
输出
接下来n行,每行一个字符串
字符串的长度不超过100
样例输入
3
ab
babadec
scdedcd
样例输出
a
bab
cdedc
 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int n;
 5     cin>>n;
 6     while(n--){
 7         string a;
 8         cin>>a;
 9         int len = a.length();
10         string maxsub = "";
11         int i, j; 
12         for(i = 0; i < len; i++){
13             for(j = 1; i+j-1<=len; j++){
14                 string s = a.substr(i, j);
15                 int p = 0;
16                 int q = j-1;
17                 while(s[p]==s[q]){
18                     p++; q--;
19                 }
20                 if(p>=q) if(j>maxsub.length()) maxsub = s;
21             }
22         }
23         cout<<maxsub<<endl;
24     }
25     return 0;
26 }

备注:注意substr的用法,以及没有直接逆序的函数。

 

posted @ 2020-06-19 10:06  timeaftertime  阅读(186)  评论(0编辑  收藏  举报