演算法:(五)字串
阿新 • • 發佈:2018-12-15
(一)字串題目的特點
①廣泛性
- 字串可以看作字元型別的陣列,與陣列的排序、查詢、調整有關
- 很多其他型別的題可看作字串型別的題
②需要掌握的概念
- 迴文
- 子串(連續)
- 子序列(不連續)
- 字首樹(Trie樹)
- 字尾樹和字尾陣列
- 匹配
- 字典序
③需要掌握的操作
- 與陣列有關的操作:增刪改查
- 字元的替換
- 字串的旋轉
(二)字串題目的常見型別
①規則判斷
- 判斷字串是否符合整數規則
- 判斷字串是否符合浮點數規則
- 判斷字串是否符合迴文字串規則
②數字運算
- int和long型別表達整數範圍有限所以經常用字串實現大整數,與大整數相關的加減乘除操作,需要模擬筆算的過程
③與陣列操作有關的型別
- 陣列有關的調整、排序等操作
- 快速排序的劃分過程要掌握和改寫
④字元計數
- 雜湊表
- 固定長度的陣列(C/C++256長度,JAVA65536長度)
- 滑動視窗問題、尋找無重複字元子串問題、計算變位詞問題
⑤動態規劃型別
- 最長公共子串
- 最長公共子序列
- 最長迴文子串
- 最長迴文子序列
⑥搜尋型別
- 深度優先搜尋
- 寬度優先搜尋
⑦高階演算法與資料結構解決的問題
- Manacher演算法解決最長迴文子串問題
- KMP演算法解決字串匹配問題
- 字首樹結構
- 字尾樹和字尾陣列