例子:
輸入: txt[] = THIS IS A TEST TEXT pat[] = TEST 輸出: Pattern found at index 10輸入: txt[] = AABAACAADAABAABA pat[] = AABA 輸出: Pattern found at index 0 Pattern found at index 9 Pattern found at index 12
模式(Pattern )搜索是計算機科學中的一個重要問題。當我們在記事本、 word文件、瀏覽器或數據庫中搜索字符串時,使用模式搜索算法來顯示搜索結果。
樸素模式搜索:
將模式逐個滑過文本并檢查是否匹配。如果找到匹配項,則再次滑動1以檢查后續匹配項。
PHP代碼:
?php // 樸素模式搜索算法function search($pat, $txt) $M = strlen($pat); $N = strlen($txt); for ($i = 0; $i = $N - $M; $i++) // 對于當前索引i,請檢查模式匹配 for ($j = 0; $j $j++) if ($txt[$i + $j] != $pat[$j]) break; // if pat[0...M-1] = // txt[i, i+1, ...i+M-1] if ($j == $M) echo Pattern found at index , $i. /n $txt = AABAACAADAABAAABAA $pat = AABA search($pat, $txt);
輸出:
Pattern found at index 0 Pattern found at index 9 Pattern found at index 13
什么是最好的情況?
當Pattern模式的第一個字符根本不存在于文本中時,會出現最佳情況。
filter_nonebrightness_4txt[] = AABCCAADDEE pat[] = FAA
最佳情況下的比較次數為O(n)。
什么是最壞的情況?
1)當文本和圖案的所有字符相同時。
filter_nonebrightness_4txt[] = AAAAAAAAAAAAAAAAAA pat[] = AAAAA
2)當最后一個字符不同時,也會出現最壞情況。
filter_nonebrightness_4txt[] = AAAAAAAAAAAAAAAAAB pat[] = AAAAB
最壞情況下的比較次數是O(m *(n-m + 1))。雖然具有重復字符的字符串不太可能出現在英文文本中,但它們很可能出現在其他html' target='_blank'>應用程序中(例如,在二進制文本中)。
相關推薦:《PHP教程》
以上就是PHP實現用于模式搜索的樸素算法(字符串匹配算法)的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答