1. 程式人生 > >演算法:(五)字串

演算法:(五)字串

(一)字串題目的特點

①廣泛性

  • 字串可以看作字元型別的陣列,與陣列的排序、查詢、調整有關
  • 很多其他型別的題可看作字串型別的題

②需要掌握的概念

  • 迴文
  • 子串(連續)
  • 子序列(不連續)
  • 字首樹(Trie樹)
  • 字尾樹和字尾陣列
  • 匹配
  • 字典序

③需要掌握的操作

  • 與陣列有關的操作:增刪改查
  • 字元的替換
  • 字串的旋轉

(二)字串題目的常見型別

①規則判斷

  • 判斷字串是否符合整數規則
  • 判斷字串是否符合浮點數規則
  • 判斷字串是否符合迴文字串規則

②數字運算

  • int和long型別表達整數範圍有限所以經常用字串實現大整數,與大整數相關的加減乘除操作,需要模擬筆算的過程

③與陣列操作有關的型別

  • 陣列有關的調整、排序等操作
  • 快速排序的劃分過程要掌握和改寫

④字元計數

  • 雜湊表
  • 固定長度的陣列(C/C++256長度,JAVA65536長度)
  • 滑動視窗問題、尋找無重複字元子串問題、計算變位詞問題

⑤動態規劃型別

  • 最長公共子串
  • 最長公共子序列
  • 最長迴文子串
  • 最長迴文子序列

⑥搜尋型別

  • 深度優先搜尋
  • 寬度優先搜尋

⑦高階演算法與資料結構解決的問題

  • Manacher演算法解決最長迴文子串問題
  • KMP演算法解決字串匹配問題
  • 字首樹結構
  • 字尾樹和字尾陣列