串的模式匹配

2021-07-11 16:08:15 字數 514 閱讀 1675

問題描述:

對於兩個字串a,b。請設計乙個高效演算法,找到b在a中第一次出現的起始位置。若b未在a中出現,則返回-1。

給定兩個字串a和b,及它們的長度lena和lenb,請返回題目所求的答案。

測試樣例:

"acbc",4,"bc",2

返回:2

思路:1,該型別題目的一般思路是暴力求解,採用兩層迴圈,我們會從a[0] 跟b[0] 匹配,如果相等則匹配下乙個字元,直到出現不相等的情況,此時我們會簡單的丟棄前面的匹配資訊,然後從a[1] 跟 b[0]匹配,迴圈進行,直到主串結束,或者出現匹配的情況。這種簡單的丟棄前面的匹配資訊,造成了極大的浪費和低下的匹配效率。時間複雜度是o(nlogn)。

(暴力方法)ac**如下:

class stringpattern 

int j=0,k=0;

while(j=lenb)

return k-lenb;

return -1;

}};

串的模式匹配

最近在學 vc include stdafx.h include include define max size 1000 串的模式匹配 功能 找出str2字串在str1字串中第一次出現的位置 不包括串結束符 返回 該位置的序號 環境 visual c 2008 注意 1.此為樸素的模式匹配演算法,...

串的模式匹配

以前每次看到字串匹配,一律跳過,今天耐著性子研究了下,依舊是半混沌狀態,先整理放在這,以備後用。這篇文章幫助很大,樸素匹配演算法 kmp演算法,收藏先。1.樸素匹配演算法 int patternmatch common const char pstring,const char ppattern i...

串的模式匹配

子串的定位操作通常稱作串的模式匹配。index s,t,pos t被稱為模式串。直觀演算法 int index string s,string t,int pos else if j lent return i lent else return 0 直觀演算法很簡單,如果字串中當個字元匹配,主串指標...