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
原文:http://blog.csdn.net/li_chihang/article/details/44655093