字串匹配

2021-08-17 19:30:29 字數 809 閱讀 1919

在文字中查詢對應的模式成為字串匹配:

文字:t

模式:p

一:樸素的字串匹配演算法

思路:(1)首先有兩個游標i,j指向文字和模式的位置

(2)當t[i]=p[j]時i++,j++,繼續往下比較。

(3)當t[i]!=p[j]時,i回溯到上次開始比較的下一位,j回溯到0

(4)當找到一段連續的字元與模式字串匹配最終模式字串匹配成功,返回此次開始比較的文字位置。

int native_stringmatch(string *t,string *p)

else

24 }

25 if (j == p.length) else

30 }

next[j]的求法:遞迴)

最大長度表右移一位,然後初值為-1;

public int getnext(string ps)  else 

14 }

15 return next;

16 }

//優化過後的next陣列求法

2 public static int getnext(string ps) else

17 } else

20 }

21 return next;

22 }

字串匹配

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