我在這裏看到了很少的答案,但仍需要一些澄清。 KMP具有O(n+m)
最壞情況下的時間複雜度。但是我的理解是,在最壞的情況下,它應該是O(n*m)
。讓我們舉個例子:KMP模式匹配算法時間複雜度可以是O(m * n)?
string(n): aaaaaaaaa
pattern(m): aaab
前3個字符匹配。然後是不匹配的。適當的"aaa"
前綴後綴表將返回2.因此只有(3-2)= 1字符移動可以根據KMP進行。因此,我們比較n*(m-1)
次,然後才能斷定在這種情況下不存在匹配。有效的時間複雜度是O(n*m)
。
有人可以請解釋在這種情況下它是怎麼樣的O(m+n)
。除了正確的前綴後綴表之外,我還必須考慮其他任何事情,並將其視爲一種特殊情況。是否在KMP中提到過?對這個特定場景的詳細解釋會非常有幫助。
謝謝你!....現在它非常清晰......我將文本遞增1而不是遞減1 – bbshaw