字串匹配演算法 樸素(暴力)匹配演算法的實現

2021-10-01 05:33:10 字數 1307 閱讀 7852

字串匹配問題:假設存在原始的字串 abcabdfhfd 之後使用 r 表示,現提供另乙個匹配字串 abdf 之後使用 m 表示,請計算得出 m 字串在 r 字串中的位置;

問題分析:按照常規的思維,要計算兩個字串的匹配關係,需要使用較短的匹配字串逐項對比原始字串,如果發現有字串不匹配則回到初始位置的後一位進行再次出現匹配,直到找到為止,如下所示。使用這種方式得出的演算法又被稱之為樸素的字串匹配演算法,因為隨機性較大,而且是逐項匹配,演算法的時間複雜度o[m*n]:

**實現:樸素的字串匹配的演算法實現

/**

* 樸素的字串匹配演算法實現,使用逐項對比的邏輯,

* 並考慮**健壯性加入

* 原始字串和匹配字串的長度判斷,

* 原始字串剩餘量和匹配字串長度判斷,

** 雙層for迴圈,本例中沒辦法得出準確的時間複雜度計算公式,

* 但根據時間複雜度計算原則可推出,演算法的時間複雜度為o[m*n]

** 引數: resourcestr 表示原始的字串r;

* matchstr 表示匹配的字串m;

** */

public static void generatematchstr(string resourcestr, string matchstr )

int countresource = i;

for(int j = 0; j < matchstrlen; j++, countresource++)

if(j == matchstrlen-1)}}

}}

結果分析:分別測試不同情況的字串匹配所得的結果,可以看出該演算法可以計算得出字串的匹配位置;

如有任何問題,歡迎指正討論,謝謝!

樸素字串匹配演算法

include include include define maxsize 40 define ok 1 define error 0 using namespace std typedef char string maxsize 1 int string assign string m,char...

演算法 樸素字串匹配

模式匹配是資料結構中字串的一種基本運算,給定乙個子串,要求在某個字串中找出與該子串相同的所有子串,這就是模式匹配。假設p是給定的子串,t是待查詢的字串,要求從t中找出與p相同的所有子串,這個問題成為模式匹配問題。p稱為模式,t稱為目標。如果t中存在乙個或多個模式為p的子串,就給出該子串在t中的位置,...

字串暴力匹配演算法

暴力匹配演算法 如果用暴力匹配的思路,並假設現在 str1 匹配到 i位置,子串 str2 匹配到 j 位置,則有 1 如果當前字元匹配成功 即 str1 i str2 j 則i j 繼續匹配下乙個字元 2 如果失配 即 str1 i str2 j 令i i j 1 j 0 相當於每次匹配失敗時,i...