重啟c語言之串 串的模式匹配

2021-10-06 10:49:05 字數 910 閱讀 4127

給定乙個主串s(長度<=10^6)和乙個模式串t(在長度<=10的五次冪),要求在主串s中找出與模式t相匹配的子串,返回相匹配的子串中的第乙個字元在主串s**現的位置。

輸入格式:

輸入有兩行: 第一行是主串s; 第二行是模式t.

輸出格式:

輸出相匹配的子串中的第乙個字元在主串s**現的位置。若匹配失敗,輸出0.

輸入樣例:

在這裡給出一組輸入。例如:

aaaaaba

ba

輸出樣例:

在這裡給出相應的輸出。例如:

6
思路:採用kmp演算法進行匹配。以空間換取時間。具體的幾個點在於next陣列的求解、kmp演算法。首先我們需要求出next陣列,因為next陣列中的值只和模式串有關,因此只需知道模式串的值即可得到對應的next陣列的值。kmp演算法就是模式匹配下的情況,整體的**如下所示:

#include

#include

#include

int next[

100001];

void

get_next

(char

*t,int

*next)

else

j=next[j];}

}int

kmp(

char

*s,char

*t,int pos)

//pos為s串的起始比較位置

else}if

(t[j]

=='\0'

&&j!=-1

)return i-j+1;

else

return0;

}int

main()

重啟c語言之樹 列出葉結點

對於給定的二叉樹,本題要求你按從上到下 從左到右的順序輸出其所有葉節點。輸入格式 首先第一行給出乙個正整數 n 10 為樹中結點總數。樹中的結點從 0 到 n 1 編號。隨後 n 行,每行給出乙個對應結點左右孩子的編號。如果某個孩子不存在,則在對應位置給出 編號間以 1 個空格分隔。輸出格式 在一行...

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

head.h include includeusing namespace std class string void string getstring void string getsubstring void string kmp cout kmp method called main.cpp ...

C語言之 檔案操作模式

rt 僅僅讀開啟乙個文字檔案。僅僅同意讀資料 wt 僅僅寫開啟或建立乙個文字檔案,僅僅同意寫資料 at 追加開啟乙個文字檔案,並在檔案末尾寫資料 rb 僅僅讀開啟乙個二進位制檔案。僅僅同意讀資料 wb 僅僅寫開啟或建立乙個二進位制檔案。僅僅同意寫資料 ab 追加開啟乙個二進位制檔案,並在檔案末尾寫資...