日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

主串与模式串的匹配

發布時間:2023/11/29 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 主串与模式串的匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主串與模式串的匹配

(1)BF算法:

      BF算法比較簡單直觀,其匹配原理是主串S.ch[i]和模式串T.ch[j]比較,若相等,則i和j分別指示串中的下一個位置,繼續比較后續字符,若不相等,從主串S的下一個字符(i=i-j+2)起再重新和模式串T的第一個字符(j=1)比較。

?

(2)KMP算法:

      KMP算法相對BF會復雜一些,但對于計算機而言,這其實是減少很多不必要的匹對。在匹配失敗時最大的移動模式串,以減少匹配次數,即當匹配失敗時(S.ch[i]!=T.ch[j]),在模式串中已匹配的字符找出其長度最長的相同前后綴,假設其長度為k,則模式串T回溯到T.ch[k+1]與S.ch[i]匹對。

模式串前后綴相同個數
a0
ab0
abaa1
ababa、ab2
ababaa、ab、aba3

在作業題中,我用的是KMP算法進行匹配。考慮的當模式串第一位字符與主串字符不匹配時,若按原方法回溯會陷入死循環,所以講next[0]初始為-1? ??

?

定義晚next函數后則定義KMP函數,僅需匹配時i++和j++,不匹配時i不變,j=next[j](將模式串回溯至k)重新開始進行匹配,直至匹配完成輸出i-j+1(主串中的子串的第一個字符所在位置)

?

?

?

?

轉載于:https://www.cnblogs.com/llhs/p/10703167.html

總結

以上是生活随笔為你收集整理的主串与模式串的匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。