在leetcode上刷題時遇到了這個問題,認真學習了該演算法。
參考:演算法共分為三步:
1.將字串a轉化為奇數長度字串b;
2.計算字串b中以每乙個元素為中心的回文子串長度得到數字陣列c;
3.獲取c中的最大值並依據此最大值擷取字串a得到目標最長的回文字串。
直接上關鍵**:
// 預處理原始字串,將其轉化為奇數長度。這樣的好處是不必在特殊處理偶數長度的字串
string preprocess(string s)
string longestpalindrome(string s)
} // 查詢最大回文字串下標和長度
int maxlen = 0;
int centerindex = 0;
for (int i = 1; i < n-1; i++)
} delete p;
// 擷取最大回文字串
return s.substr((centerindex - 1 - maxlen)/2, maxlen);
}
演算法學習記錄
排序演算法複雜度 層序遍歷 雙端佇列 演算法流程 特例處理 當樹的根節點為空,則直接返回空列表 初始化 列印結果空列表 res 包含根節點的雙端佇列 queue bfs 迴圈 當 queue 為空時跳出 新建列表 temp 用於臨時儲存當前層列印結果 當前層列印迴圈 迴圈次數為當前層節點數 即 qu...
PCA演算法學習記錄
重要宣告 以下內容主要參考吳恩達機器學習課程和張洋的pca數學原理文章 降維 dimensionality reduction 降維的目的 1 資料壓縮 2 視覺化資料。pca principal component analysis 是一種常用的資料分析方法。pca通過線性變換將原始資料變換為一組...
mysql Join演算法學習記錄
通過此次學習可以了解到join演算法的種類和原理,從而達到優化join語句 join演算法分類 nested loop join 中文意思為 巢狀迴圈鏈結 在mysql的實現中,nested loop join有3種實現的演算法 nested loop index nested loop join ...