Manacher s演算法學習記錄

2021-08-15 20:46:55 字數 564 閱讀 2785

在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 ...