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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

字符串匹配rk算法c语言,字符串匹配问题(BFRK算法)

發布時間:2024/9/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串匹配rk算法c语言,字符串匹配问题(BFRK算法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 題目

有一個主串S={a,b,c,a,c,a,b,d,c},模式串T={a,b,d},請找出模式串在主串中第一次出現的位置

提示:不需要考慮字符串大小寫問題,字符均為小寫字母

2. BF算法

BF算法,又稱爆發匹配算法,簡單來說,就是將模式串一個一個字符與主串進行對比,直到模式串中所有的字符匹配成功。

解法思路:

1、 分別利用計數指針i和j,指示主串S和模式T中當前正待比較的字符位置,i初值為pos,j的初值為1;

2、 如果2個串均為比較到串尾,即i和j均小于等于S和T的長度時, 則循環執行以下的操作:

S[i]和T[j]比較,若相等,則i 和 j分別指示串中下一個位置,繼續比較后續的字符;

若不相等,指針后退重新開始匹配. 從主串的下一個字符串(i = i – j + 2)起再重新和模式第一個字符(j = 1)比較;

3、 如果j > T.length, 說明模式T中的每個字符串依次和主串S找中的一個連續字符序列相等,則匹配成功,返回和模式T中第一個字符的字符在主串S中的序號(i-T.length);否則匹配失敗,返回0;

輔助部分

核心部分

3. RK算法

相對來說,比較字母總是不如比較數字大小來的簡單,那么我們是否可以將字符通過什么方式來計算出對應的數字結果呢?

我們的前輩,Rabin和Karp就很有想法的,通過設計一個哈希公式,利用字符串對應的哈希值來進行比較。即我們已知的模式串可以計算出它的哈希值,同時將主串拆分出與模式串相同長度的子串來計算哈希值,比較兩個哈希值是否相等。

那么問題來了:如何將一個‘bcd’換算成一個哈希值?

通過ASCII表可以直到字母對應的ASCII值,‘a’ = 97。

字母一共有26位,我們可以設計一個26進制

bcb = ('b'-'a')*26^2 + ('c'-'a')*26^1 + ('b'-'a')*26^0;

其中的2次方,也可以認為是模式串長度m減1得來的。

上邊計算字符串的哈希值的邏輯假如理解的話,那我們可以再來想一個問題:主串拆分出來的,相鄰兩個子串,對應的哈希值計算公式是否有交集?是否可以通過前一個子串的哈希值,來求得下一個子串呢?

我們再來看看:

假如相鄰的兩個字符為’bcb’和’cba’,他們的哈希計算分別為

bcb = (‘b’-‘a’)*26^2 + ('c'-'a')*26^1 + ('b'-'a')*26^0;

cba = ('c'-'a')*26^2 + ('b'-'a')*26^1 + (‘a’-‘a’)*26^0;

可以看到,‘bcb‘減去了最高位的‘b’,同時后兩位的多乘了一次26,然后再加上下一個字符串的最低位’a’,得到的結果就是‘cba’的哈希值。

最終的公式

St[i] = (St[i-1] - 26^(m-1)*(S[i]-'a')) * 26 + (S[i+m]-'a')

ps:St[i]為主串中當前子串的哈希值,St[i-1]為前一個子串的哈希值,m為模式串的長度

那么,兩個字符串的哈希值相等,就表示兩個字符串就一定相同嗎?

答案是不一定的,所以我們還需要進一步進行驗證,哈希值相等時,兩個字符串是否真的匹配?

輔助部分

核心部分

總結

以上是生活随笔為你收集整理的字符串匹配rk算法c语言,字符串匹配问题(BFRK算法)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产免费网 | 91成人精品 | 国产香蕉一区二区三区 | 精品一区二区三区蜜臀 | 国产精品美女久久久久av超清 | 黄色www视频 | 日韩免费二区 | 欧美在线网站 | 欧美日韩国产区 | 精品国产丝袜一区二区三区乱码 | 亚洲欧洲精品一区二区 | 国产在线一区二区视频 | av日韩不卡| 97成人精品 | 日本视频二区 | 99免费观看 | 屁屁影院第一页 | 爱爱一区二区三区 | 正在播放国产精品 | 亚洲天堂色图 | 91成品视频 | 天天干天天操天天射 | 在线观看免费观看在线 | 密臀av一区二区 | 日韩视频免费观看高清完整版 | 国产精品三级久久久久久电影 | 亚洲欧美另类在线观看 | 亚洲综合第一 | 亚洲视频网站在线 | 免费观看黄一级视频 | 182在线视频 | 亚洲自拍电影 | 狠狠综合网 | 亚洲逼院| 色婷婷小说 | 国产图片一区 | 中文字幕高清在线免费播放 | 亚洲伊人天堂 | 亚洲国产第一 | 欧美色射 | 激情导航 | 日韩大片av | 日本一区二区三区在线观看视频 | 成人在线看片 | 色哟哟在线视频 | h在线免费| 成人久色 | 宗合久久 | www.视频一区 | 免费观看毛片 | 成人精品视频 | 麻豆网站入口 | 日韩黄色一区二区 | 很黄很污的视频 | 天天操天天做 | 欧美成人专区 | 亚洲最新中文字幕 | 黄色一级片在线看 | 国产网站免费 | 狠狠成人| 黄色小视频在线免费观看 | 色污网站 | 一区二区网 | 欧美日韩中文字幕在线观看 | 欧美老熟妇喷水 | 狠狠干一区二区 | 丝袜脚交国产在线观看 | 91免费小视频| 污视频免费在线 | 欧美日韩生活片 | 国产一区二区三区欧美 | 可以免费看av的网址 | 中文在线免费看视频 | 99成人在线 | 99热在线免费观看 | 婷婷777 | 美女啪啪av | www中文在线 | 伊人网站在线观看 | 我的邻居在线观看 | 国产深夜视频 | 欧美肉大捧一进一出免费视频 | 欧美一区二区三区在线播放 | 特级一级黄色片 | 色噜噜视频 | 男人天堂网在线观看 | 最新自拍偷拍 | 手机av资源| 国内精品久久久久久久久久久 | 韩国女主播一区二区 | 亚洲一区欧美激情 | 在线观看你懂的视频 | 婷婷午夜精品久久久久久性色av | 狠狠干香蕉 | 欧美 日韩 国产 中文 | 96久久 | 亚洲精品成人无码毛片 | 国产乡下妇女做爰毛片 | 日本黄色片在线播放 |