字串匹配

2021-07-22 04:54:42 字數 556 閱讀 3637

今天看演算法導論,看到了乙個字串匹配演算法特別有意思,有限自動機字串匹配演算法

說它有意思是因為演算法維護了乙個類似卡諾圖的狀態轉換表,對於當前狀態,接受不同字元轉移到不同的狀態,詳情參考:

不過本文不說它,而是另外乙個算是由其衍生來的kmp,直接上**

#pragma once

#include#includeusing std::vector;

//pattern為模式的型別名,需要定義size(返回模式長度的函式),t是模板文字,p是匹配模式

templateint kmp_matcher(const pattern& t, const pattern& p, vector& res)

if (t[i] == p[k])

}} return 0;

}//對p進行預處理,處理結果記錄在pai中,返回處理狀態

templateint preprocess(const pattern& p, vector& pai)

return 0;

}

字串匹配

題目描述 讀入資料string 然後讀入乙個短字串。要求查詢string 中和短字串的所有匹配,輸出行號 匹配字串。匹配時不區分大小寫,並且可以有乙個用中括號表示的模式匹配。如 aa 123 bb 就是說aa1bb aa2bb aa3bb都算匹配。輸入 輸入有多組資料。每組資料第一行輸入n 1 n ...

字串匹配

time limit 1000ms memory limit 65536k 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現...

字串匹配

面試題 給一串很長的字串,要求找到符合要求的字串,例如目的串 123 1 3 2 12 3 這些都要找出來 思路一 利用兩層迴圈,逐個查詢目的串中的字元,比如先查詢字元 1 是否在長字串中,再查詢 2 是否在長字串中,直到目的串遇到 0 是 include include include int m...