字串查詢匹配演算法的一種Java實現

2021-07-01 23:25:26 字數 868 閱讀 5402

(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 ...