4042 Rabin Karp字串匹配

2021-06-19 04:13:24 字數 656 閱讀 8375

時間限制: 

1000ms

記憶體限制: 

65536kb

描述現在有乙個僅由小寫字母組成的字串s,假定將字母a,b,c...z依次編號為1,2,3...26,現在要在s中找到所有長度為m的且字母編號和為q的子串。

輸入第一行輸入n,表示測試資料的個數,以下n行每行包含乙個測試資料

一行測試資料由三部分組成:字串s(長度不超過100)、m(m小於s的長度)、q。

輸出輸出符合條件的子串個數

後面每行輸出乙個相應的子串

樣例輸入

1

abcabc 3 6

樣例輸出

4
abc
bca
cab
abc

原始碼(openjudge通過)

#include"stdio.h"

#include"string.h"

#define n 100

int main()

if(sum==q)

sum=0; }

printf("%d\n",k);

for(i=0;i

count--; }

return 0;

}  

(三)Rabin Karp字串查詢演算法

不同於傳統的字元比較,本演算法的核心在於雜湊。先計算出子串 pat 的乙個雜湊值,然後從文字 txt 中,從 i 0 開始,計算從當前 i 開始的子串長度的字串的雜湊,比如 pat 250 txt 230240250 計算的是 230 302 024 的雜湊,依次類推,與 250 的雜湊值進行比較,...

字元匹配問題(1) Rabin Karp演算法

字串匹配問題 1 rabin karp演算法 1.問題描述 給定目標字串 t 0.n 1 基於 0 的陣列,陣列長度為 n 和模式串 p 0.m 1 問 p 可否匹配 t 中的任意子串,如果可以,返回匹配位置。2.問題分析 直觀分析 brute force 的蠻力法,適用於較小規模的字串匹配。優化 ...

字串匹配演算法 Rabin Karp 演算法

字串匹配演算法 rabin karp 演算法 參考資料 1 演算法導論 2 lalor 3 記憶碎片 在實際應用中,rabin karp 演算法對字串匹配問題能較好的執行。rabin karp 演算法需要對字串和模式進行預處理,其預處理時間為 o m 在最壞情況下的執行時間為 o n m 1 m 但...