题目链接:点击打开链接
解:
代码 C++:
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <stack>
#include <queue>
using namespace std;
const int N = 1000;
int table[N][N] = {0};
string longestPalindrome(string s) {
int len = s.length();
int site = 0;
int sublen = 1;
for(int i=0; i<len; i++){
table[i][i] = 1;
}
for(int i=0; i<len-1;i++){
if(s[i] == s[i+1]){
table[i][i+1] = 1;
site = i;
sublen = 2;
}
}
for(int j=2; j <len; j++){
for(int i=0; i<len; i++){
if(s[j] == s[i] && table[i+1][j-1] == 1){
table[i][j] = 1;
if (j-i+1 > sublen){
site = i;
sublen = j-i+1;
}
}
}
}
for(int i=0; i<8; i++){
for(int j=0; j<8; j++){
cout << table[i][j] <<" ";
}cout<<endl;
}
return s.substr(site, sublen);
}
int main()
{
string s = "aceedbab";
cout << longestPalindrome(s) << endl;
return 0;
}