字元匹配 KMP演算法

2021-08-22 02:47:54 字數 647 閱讀 2123

problem description

給定兩個字串string1和string2,判斷string2是否為string1的子串。

input

輸入包含多組資料,每組測試資料報含兩行,第一行代表string1(長度小於1000000),第二行代表string2(長度小於1000000),string1和string2中保證不出現空格。

output

對於每組輸入資料,若string2是string1的子串,則輸出string2在string1中的位置,若不是,輸出-1。

sample input

abc

a123456

45abc

ddd

sample output

1

4-1

解:

#include #include #include #define n 1000000+100

char st1[n];

char st2[n];

int next[n];

void getnext(int len2)

int main()

return 0;

}

字元匹配kmp演算法

前言 之前對kmp演算法雖然了解它的原理,即求出p0 pi的最大相同前字尾長度k 但是問題在於如何求出這個最大前字尾長度呢?我覺得網上很多帖子都說的不是很清楚,總感覺沒有把那層紙戳破,後來翻看演算法導論,32章 字串匹配雖然講到 了對前1.kmp演算法的原理 本部分內容 字串匹配是計算機的基本任務之...

演算法 KMP 字元匹配

主要參考 理解kmp 的9張ppt 假設模式串為p,原串為s 1 樸素方法 最壞時間複雜度 o p.length s.length 2 kmp 時間複雜度 o p.length s.length kmp演算法步驟 1.構造next陣列 2.將模式串和原串進行匹配 3 kmp相關練習 3道都是模板題,...

KMP字元匹配演算法原理

掘金位址鏈結 簡介 kmp演算法是一種改進的字元匹配演算法。由d.e.knuth,j.h.morris和v.r.pratt提出的,因此人們稱它為克努特 莫里斯 普拉特操作 簡稱kmp演算法 它的核心思想是,通過乙個next陣列,在匹配失敗後,減少字元移動的距離,達到快速匹配的目的。要想徹底理解kmp...