日韩性视频-久久久蜜桃-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算法)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色在线观看视频网站 | 国产精品久久久无码一区 | 领导揉我胸亲奶揉下面 | 欧美亚洲成人网 | 日韩高清一级片 | 99re这里有精品 | 婷婷色av| 污视频网址在线观看 | 亚洲蜜臀av乱码久久精品蜜桃 | 天堂中文在线网 | 国产三级精品在线 | 亚洲影院中文字幕 | 91视频分类 | 毛片福利视频 | 一本高清dvd在线播放 | 国产精品91久久 | 91精品国产高清 | 经典三级久久 | 日韩视频在线播放 | 一级国产特黄bbbbb | 午夜性剧场 | 丰满人妻av一区二区三区 | 亚洲九九色 | 国产日韩欧美在线观看 | 好吊一区二区三区 | 影音先锋中文字幕在线视频 | 亚洲欧美国产一区二区 | 伊人成人动漫 | 人妻体内射精一区二区 | 亚洲欧美精品在线观看 | 亚洲精品一区二区三区蜜桃 | 欧美乱仑| 日本理论片在线 | 欧美午夜小视频 | 欧美人与动物xxxx | 欧美绿帽交换xxx | 国产精品美女久久 | 91成人在线视频 | 欧美成人三级 | 香蕉视频黄版 | 精品无码久久久久久久久久 | 中文字幕伊人 | 欧美视频在线观看一区 | 中文字幕7 | 99精品久久久久久久婷婷 | 在线精品一区二区三区 | 人妻奶水人妻系列 | 一区二区三区韩国 | 毛片9| 丁香花婷婷 | 久草国产在线视频 | 国产日产亚洲精品 | 91极品国产 | 日韩精品二区在线观看 | 亚洲最大成人综合网 | 成人免费看 | 日日操夜夜操天天操 | www色| 色宗合 | 日韩精品影院 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 日韩极品视频在线观看 | 一区二区三区视频在线 | 人人澡人人澡人人澡 | www.久久视频 | 国产日韩精品一区二区三区在线 | 超碰91在线观看 | 国产大屁股喷水视频在线观看 | 中文字幕激情 | 三女同志亚洲人狂欢 | 日本真人做爰免费视频120秒 | babes性欧美69 | 亚洲一级二级片 | 献给魔王伊伏洛基亚吧动漫在线观看 | 国产成人欧美一区二区三区91 | 在线看黄色的网站 | 精品精品 | 毛片在线免费播放 | 九色视频偷拍少妇的秘密 | 台湾av在线 | 免费一级a毛片夜夜看 | 欧美日韩xxxx | 成人爱爱免费视频 | 亚欧在线视频 | 日本在线一区二区三区 | 婷婷国产成人精品视频 | 黄色网免费看 | 午夜黄视频 | 岛国片在线免费观看 | 国产偷v | 日韩成人专区 | 香蕉色综合 | 国产九色91回来了 | 亚洲精华国产精华精华液网站 | 国产毛片毛片毛片 | 国产精品视频在线观看免费 | 国产cao| 91视频日本 | 羞羞的视频网站 |