- 总时间限制:
- 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的用法,以及没有直接逆序的函数。