字串匹配

2021-07-14 19:53:38 字數 638 閱讀 9242

題目:子串匹配母串,如果匹配,輸出子串匹配的起始位置,否則輸出-1。?可以代表乙個字元,*代表乙個或者多個。

從鍵盤輸入,先輸入子串,再輸入母串。子串母串長度均小於20。執行時間和記憶體無限制。

一開始打算用kmp或bm演算法來做,考試電腦可以上網,可以去查,但是子串有了萬用字元,next函式好像無法求(還沒想到),所以暴力求解,可惜當時沒除錯出來。

思路:用乙個find函式來找。

int find(char *substr,int start1,char *str,int start2)

其中,start1是子串匹配的其實位置,start2是母串匹配的其實位置。加上這兩個引數是為了遞迴呼叫,如果子串遇到萬用字元*,要遞迴呼叫(*後面的再和母串某個位置之後的串匹配)。大概思路就是這樣,要除錯好,還是要花一些時間。

**如下:

#includeusing namespace std;

int find(char *substr,int start1,char *str,int start2)

else if(substr[k]=='*')//遇到*萬用字元,代表任何乙個或者多個或者0個字元

else break;}}

}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...