Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
string longestPalindrome(string s) {
vector<vector<bool> >dp(s.size(), vector<bool>(s.size(), true));
//bool dp[s.size()][s.size()];
for (int i = 0; i < s.size(); i++)
for (int j = 0; j < s.size(); j++)
if (i >= j)
dp[i][j] = true;
else dp[i][j] = false;
int begin = 0, maxlen = 1;
for (int len = 1; len < s.size(); ++len){
for (int idx = 0; idx + len < s.size(); ++idx)
{
if (s[idx] == s[idx + len]){
dp[idx][idx + len] = dp[idx + 1][idx + len - 1];
if (dp[idx][idx + len] == true && len + 1 > maxlen){
begin = idx;
maxlen = len + 1;
}
}
else
dp[idx][idx + len] = false;
}
}
return s.substr(begin, maxlen);
}
string longestPalindrome(string s) {
int len = s.length(), max = 1, ss = 0, tt = 0;
bool flag[len][len];
for (int i = 0; i < len; i++)
for (int j = 0; j < len; j++)
if (i >= j)
flag[i][j] = true;
else flag[i][j] = false;
for (int j = 1; j < len; j++)
for (int i = 0; i < j; i++)
{
if (s[i] == s[j])
{
flag[i][j] = flag[i+1][j-1];
if (flag[i][j] == true && j - i + 1 > max)
{
max = j - i + 1;
ss = i;
tt = j;
}
}
else flag[i][j] = false;
}
return s.substr(ss, max);
}
AC