字串匹配

2021-08-17 17:32:13 字數 770 閱讀 2422

1、簡單匹配演算法:

#include #include using namespace std;
//得到匹配的個數

void serachpat(char* text, char* pat,int &count)

}if (j == m)

}}int main ()

2、rabin-karp演算法

演算法思想:

若hash值不相等,則繼續計算目標字串的下乙個長度為m的字元子串的hash值

若hash值相同,則需要使用樸素演算法再次判斷是否為相同的字串;

#include#includeusing namespace std;  

void rabin_karp_search(const string &t, const string &p, int d, int q)

// slide the pattern over text one by one

for (i = 0; i <= n - m; i++)

// calulate hash value for next window of text: remove leading digit,

// add trailing digit

if ( i < n-m )

} }

int main()

字串匹配

題目描述 讀入資料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...