c 串的模式匹配

2021-08-13 14:45:08 字數 640 閱讀 5309

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

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

測試樣例:

"acbc",4,"bc",2
返回:2

這道題還是比較簡單的:

class stringpattern {

public:

// write code here

int i=0;

int j=0;

int res=-1;

int flag=1;

if(a==b)

return 0;

if(lenb>lena)

return -1;

for(auto c1: a){

if(c1!=b[j] && j

而第乙個if中還有乙個if,是為了:當b中第二或第三或後面的字元與a不匹配時,不會直接continue,也就是不會跳過a的這個字元,而是會檢查a這個與b中後面不匹配的字元是否與b中第乙個字元匹配。

a: bbac

b:   bac

也就是會檢查a的第二個b是不是與b的第乙個b匹配。而不會導致,直接a的a與b的b比較,防止漏判。

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

從主串 s 的第 pos 個字元起和模式 t 的第乙個字元比較之,若相同,則繼續比較後續字元 否則從主串 s 的下乙個字元起再重新和模式 t 的字元比較之。例 s jinanshi t nan 當採用定長順序儲存結構時,實現此操作的演算法如下 int index sstring s,sstring ...

串的模式匹配

最近在學 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...