演算法步驟:
用i指向原文本,j指向待匹配字串。匹配時i,j下標遞增,不匹配時待匹配字串下標j置零,並使用待匹配字串第0號元素迴圈匹配此時失配的文字字元直到匹配。
#include#include#includevoid searchstring(char* text,char* mystring)
}else if(text[i] != mystring[j] && i < text_len)
} }}int main()
i = 30,mystring_len = 12,matched at 18
i = 56,mystring_len = 12,matched at 44
效率分析:
每次失配文字字元都需要和待匹配字串首個字元元素進行對比,整體來看整個程式所有的文字字元都需要被比較一次,時間複雜度為o(n),n為文字字元的長度。
#include#include#includevoid prefix_table(char pattern, int prefix, int n) else else
} }}
void move_prefix_table(int prefix, int n)
prefix[0] = -1;
}void kmp_search(char text,char pattern)
if(text[i] == pattern[j])else
} }}int main()
*/ return 0;
}
字串匹配演算法 字串匹配演算法總覽
字串匹配在文字處理裡非常重要,我們採用簡潔的python 把以下演算法一一實現並講解。樸素演算法 algorithm rabin karp 演算法 有限自動機演算法 finite automation knuth morris pratt 演算法 kmp algorithm boyer moore ...
字串匹配演算法
首先引用一下另一篇文章中對字串匹配的介紹 字串匹配指的是從文字中找出給定字串 稱為模式 的乙個或所有出現的位置。本文的演算法一律輸出全部的匹配位 置。模式串在 中用x m 來表示,文字用y n 來,而所有字串都構造自乙個有限集的字母表 其大小為 根 據先給出模式還是先給出文字,字串匹配分為兩類方法 ...
字串匹配演算法
平常操作文字的時候,經常需要操作對字串進行操作。而字串中最重要的一種操作就叫匹配,字串的匹配演算法很多,人們最熟悉的莫過於kmp演算法了。今天就來談一談一些字串匹配演算法。先來說說大名鼎鼎的kmp演算法,這個演算法出現在無數的資料結構與演算法書上面。它的策略很簡單 當模式串第k個字元不匹配主串中第s...