http://acm.nyist.net/JudgeOnline/problem.php?pid=308
题目大意:用n个字符串,对每个字符串找出最长的一个子串,子串的逆序序列也要包含在原字符串中;
#include<iostream>
#include<string> //用string类要包含头文件;(*.h是c的头文件)
#include<algorithm>
using namespace std;
int main(void)
{
string str1, str2, longestSubstr;
int ncases;
cin>>ncases;
while (ncases-- != 0)
{
cin>>str1;
str2 = str1;
reverse(str2.begin(), str2.end());//将str2翻转
int maxlen = 0;
int len, i; //len记录子串长度,i记录子串起始位置
for (len = str1.length(); len > maxlen; len--){
for (i = 0; i + len <= str1.length(); i++){
if (str2.find(str1.substr(i, len)) != string::npos){//find失败时返回string::npos(等价于-1)
maxlen = len;
longestSubstr = str1.substr(i, len);
break;
}
}
}
cout<<longestSubstr<<endl;
}
return 0;
}