樸素的串模式匹配(C語言實現) 串模式匹配

2021-10-09 05:13:11 字數 1135 閱讀 6783

從主串 s 的第 pos 個字元起和模式 t 的第乙個字元比較之,若相同,則繼續比較後續字元;否則從主串 s 的下乙個字元起再重新和模式 t 的字元比較之。

例:s = 『jinanshi』,t = 『nan』。

當採用定長順序儲存結構時,實現此操作的演算法如下:

int

index

(sstring s, sstring t,

int pos)

// 繼續比較後繼字元

else

// 指標後退重新開始匹配 }if

( j >t[0]

)return i -t[0]

;else

return0;

}// index

#include

#include

#define maxstrlen 255

//儲存結構

typedef

unsigned

char sstring[maxstrlen +1]

;//基於該儲存結構實現樸素的模式匹配

intindex

(sstring s, sstring t,

int pos)

// 繼續比較後繼字元

else

// 指標後退重新開始匹配 }if

(j > t[0]

)return i - t[0]

;else

return0;

}bool

strassign

(sstring str,

char

* src)}}

return

true;}

intmain()

設計思想簡單、易於理解。

通常情況下,效率比較高。經常被程式設計師選用。

此時演算法的時間複雜度為:o(n+m)

m、n分別為主串和子串的長度。

某些特殊的情況下,效率比較低。

此時演算法的時間複雜度為:o(n*m)

m、n分別為主串和子串的長度。

串的模式匹配(C語言實現) BF演算法

串的模式匹配演算法 子串的定位運算 演算法思想 設有主串s,模式t。有 i 和 j 分別指向s和j的首個元素。i 1 j 1 設有pos。pos指t在s中首次出現的位置的首位址。初始指向s的首元素。將t中的首個元素與s中首個元素對比 若相同 i 與j 對比 關於儲存 採用定長順序儲存結構。ps 從下...

串之樸素的模式匹配演算法

一 串的模式匹配的定義 這個問題其實就是乙個字串在乙個大的字串中的定位問題。這種子串的定位問題的操作通常叫做串的模式匹配 二 舉例說明 假如主串是s qbfhilmeach 模式串 p hilk 現在我們需要在主串中找到模式串。它的匹配過程如下 直到匹配成功 簡單得來說,就是對主串的每乙個字元作為子...

資料結構之串的模式匹配(C語言實現)

一 暴力匹配演算法 bf bf全稱為brute force,最簡單直觀的模式匹配演算法。1.演算法思想 兩個字串進行匹配時,乙個主串和乙個模式串,就是按照我們最容易想到的演算法來進行匹配。用兩個變數i,j分別記錄主串和模式串的匹配位置,如果兩者在某個字元不匹配,則將記錄主串匹配位置的變數i回退到匹配...