(1)kmp演算法
kmp演算法是一種改進的
字串匹配
演算法,由d.e.knuth與v.r.pratt和j.h.morris同時發現,因此人們稱它為
克努特——
莫里斯——
普拉特操作(簡稱kmp演算法)。kmp演算法的關鍵是利用匹配失敗後的資訊,儘量減少模式串與主串的匹配次數以達到快速匹配的目的。具體實現就是實現乙個next()函式,函式本身包含了模式串的區域性匹配資訊。
/**
* param search 查詢的字串
* param buf 被查詢的字串
*/public int search(string search, string buf) else
} if(i == search.length()) else }
private void kmpnext(string buf, int next) else
} }
(2)sunday演算法
sunday演算法是daniel m.sunday於2023年提出的字串
模式匹配
。其核心思想是:在匹配過程中,模式串發現不匹配時,演算法能跳過盡可能多的字元以進行下一步的匹配,從而提高了匹配效率。
/**
* param search 查詢的字串
* param buf 被查詢的字串
*/public int search(string search, string buf)
} else else
break;
}break _for;}}
}return index;
}
一種快速的字串匹配演算法
快速字串查詢函式 目前比較流行的字串有kmp與bm演算法,實際上kmp演算法在使用的時候比strchr快不了多少,而bm演算法也 大約只有kmp演算法的3 5倍。這裡介紹乙個快速字串查詢函式。舉乙個例子 hello,world 中查詢 word 子串,可以先把兩個字串按照首位元組對好 hello,w...
字串permute演算法的一種實現
permute演算法是求序列的全排列,對於字串來說,就是將組成該字串的所有字元按各種方式排列一下。可以通過遞迴實現該演算法。遞迴的基準情形是 當字串的長度小於等於1時,其全排列就是字串自身,直接輸出。如果字串長度大於1,則遍歷字串中的每個字元,以該字元作為目的串的起始字元,再對源串中的其餘字元求全排...
字串匹配演算法 字串匹配演算法總覽
字串匹配在文字處理裡非常重要,我們採用簡潔的python 把以下演算法一一實現並講解。樸素演算法 algorithm rabin karp 演算法 有限自動機演算法 finite automation knuth morris pratt 演算法 kmp algorithm boyer moore ...