算法:(五)字符串

(一)字符串題目的特色算法

①普遍性數組

  • 字符串能夠看做字符類型的數組,與數組的排序、查找、調整有關
  • 不少其餘類型的題可看做字符串類型的題

②須要掌握的概念數據結構

  • 迴文
  • 子串(連續)
  • 子序列(不連續)
  • 前綴樹(Trie樹)
  • 後綴樹和後綴數組
  • 匹配
  • 字典序

③須要掌握的操做spa

  • 與數組有關的操做:增刪改查
  • 字符的替換
  • 字符串的旋轉

(二)字符串題目的常見類型排序

①規則判斷字符串

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

②數字運算搜索

  • int和long類型表達整數範圍有限因此常常用字符串實現大整數,與大整數相關的加減乘除操做,須要模擬筆算的過程

③與數組操做有關的類型數據

  • 數組有關的調整、排序等操做
  • 快速排序的劃分過程要掌握和改寫

④字符計數動態規劃

  • 哈希表
  • 固定長度的數組(C/C++256長度,JAVA65536長度)
  • 滑動窗口問題、尋找無重複字符子串問題、計算變位詞問題

⑤動態規劃類型哈希表

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

⑥搜索類型

  • 深度優先搜索
  • 寬度優先搜索

⑦高級算法與數據結構解決的問題

  • Manacher算法解決最長迴文子串問題
  • KMP算法解決字符串匹配問題
  • 前綴樹結構
  • 後綴樹和後綴數組
相關文章
相關標籤/搜索