版本 f072e684b8c90503d5329bf4acc6472e6806d61d
acm/course/String_Matching
KMP
Knuth-Morris-Pratt algorithm
使用時機: 給定A,B兩字串,尋找B字串是否存在A當中
當B的字串內容,本身有重複的字串時,可用KMP以減少重複否配的時間
ex:
B : aabaab
B字串本身重複 “aab”
方法:先用fail function找出字串B重複的字串
Fail Function
目的:當否配失敗時,能知道字串B要對齊哪裡繼續否配
變數:
B [ ] … 存放字串B
pi [ ] … 紀錄前一個重複字串出現的位置
cur_pos … 目前字串重複的位置
初始化: