LeetCode-05最長迴文子串
阿新 • • 發佈:2018-12-03
C++
class Solution { public: string longestPalindrome(string s) { if (s.empty()) return ""; int dp[s.size()][s.size()] = {0}, left = 0, right = 0, len = 0; for (int i = 0; i < s.size(); ++i) { for (int j = 0; j < i; ++j) { dp[j][i] = (s[i] == s[j] && (i - j < 2 || dp[j + 1][i - 1])); if (dp[j][i] && len < i - j + 1) { len = i - j + 1; left = j; right = i; } } dp[i][i] = 1; } return s.substr(left, right - left + 1); } };
這是動態規劃的方法,還有中心擴散法和Manacher's Algorithm 馬拉車演算法,馬拉車還有點迷糊,等我過段時間再看下,然後再補上C的程式碼。
留下了沒技術的淚水。