資料結構04 串的樸素匹配

2022-09-12 17:18:25 字數 1023 閱讀 7335

在串的問題裡,匹配是很重要的一類問題。匹配是在乙個給定的主串中尋找乙個相同的子串,確定子串出現的位置。

乙個樸素的做法是,將主串和子串逐字元比較。用指標移動兩字元。步驟如下:

1: 有兩指標,其中乙個i指向主串查詢的位置,另外j乙個指標指向子串的首位。

2: 比較兩指標所指的字元。如果相同,兩指標都移動一位。如果不同,j回到子串首位,i回到比較的初始位置+1位。

3: 直至j大於子串的長度。說明找到乙個匹配的位置。

以下是找出乙個主串的所有匹配子串位置的c語言**。

int index(str s,str t,int

pos)

else

}if (j >=strlen(t))

} return0;

}

以下是找出乙個主串的所有匹配子串位置的python語言**。

class

index(object):

def__init__

(self,s,t,pos):

self.s =s

self.t =t

self.pos =pos

defindex(self):

i = self.pos - 1;

while i j =0

while j < len(self.t) and i if self.s[i] ==self.t[j]:

i = i + 1j = j + 1

#ifelse

: i = i - j + 1j =0

#else

#while

if j >=len(self.t):

print ("

the word is at:%d

" % (i - len(self.t) + 1) )

(完)

資料結構 串的樸素模式和KMP匹配演算法

一 樸素模式 假設我們要從主串s goodgoogle 中找到子串t google 的位置,步驟如下 i表示主串的當前位置下標,j表示子串的當前位置下標,如上圖在第一輪比較 i 1開始 中j 4和i 4的位置不匹配,接下來就要指標回退,從i 2開始比較,如下 如此反覆直到比較到 i 主串長度 子串長...

C語言資料結構 9 串的樸素模式匹配演算法

查詢字串子串的位置的操作,稱為串的模式匹配,子串被稱為模式串。串的模式匹配是非常高頻的操作,具體如何去匹配的演算法也很重要。樸素模式匹配演算法也稱為布魯特 福斯演算法,感覺很是高大上,但是實現起來很簡單。樸素的意思就是最符合咱們樸素思維的演算法,從主串的第乙個字元開始與子串進行比對,如果相等則逐一比...

資料結構梳理04 串的模式匹配 KMP演算法

一 串的模式匹配 設有兩個串s和pat,若在s中查詢是否有與pat相同的子串,則稱串s為目標,稱pat為模式,串的模式匹配即為查詢模式串在目標串中的匹配位置的運算。1 樸素的模式匹配 b f演算法 樸素的模式匹配想法十分簡單粗暴 將pat中的每個字元依次與s中的字元比較,如果某一位匹配失敗,則將pa...