洛谷 P3375 模板 KMP字串匹配

2021-08-23 14:23:56 字數 651 閱讀 7898

如題,給出兩個字串s1和s2,其中s2為s1的子串,求出s2在s1中所有出現的位置。

為了減少騙分的情況,接下來還要輸出子串的字首陣列next。

輸入格式:

第一行為乙個字串,即為s1

第二行為乙個字串,即為s2

輸出格式:

若干行,每行包含乙個整數,表示s2在s1中出現的位置

接下來1行,包括length(s2)個整數,表示字首陣列next[i]的值。

輸入樣例#1:

abababc

aba

輸出樣例#1:

1

30 0 1

ac**:

#include#include#includeusing namespace std;

const int n = 1000010;

int len, idx = 0, ans[n], nxt[n];

string s1, s2;

void get ()

}void cmp ()

}}int main ()

洛谷 P3375 模板 KMP字串匹配

題目大意 給出n長的字串s1,m長的字串s2,求出s2在s1中所有出現的位置。用kmp做,先輸入每一次s2出現的位置,然後輸出s2的字首陣列next。題解 kmp next i 表示需要匹配的字串的最長公共前字尾的長度。怎麼求next i 呢?首先初值next 1 0,j 0 對於每乙個如果s2 j...

洛谷P3375 模板 KMP字串匹配

如題,給出兩個字串s1和s2,其中s2為s1的子串,求出s2在s1中所有出現的位置。為了減少騙分的情況,接下來還要輸出子串的字首陣列next。輸入格式 第一行為乙個字串,即為s1 僅包含大寫字母 第二行為乙個字串,即為s2 僅包含大寫字母 輸出格式 若干行,每行包含乙個整數,表示s2在s1 現的位置...

洛谷 P3375 模板 KMP字元匹配

如題,給出兩個字串s1和s2,其中s2為s1的子串,求出s2在s1中所有出現的位置。為了減少騙分的情況,接下來還要輸出子串的字首陣列next。輸入格式 第一行為乙個字串,即為s1 第二行為乙個字串,即為s2 輸出格式 若干行,每行包含乙個整數,表示s2在s1中出現的位置 接下來1行,包括length...