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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

KMP字符串匹配

發布時間:2025/7/14 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KMP字符串匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本蒟蒻經過一下午的掙扎終于能略微窺探到KMP算法的精妙,也是彌補了以前學數據結構的遺憾,這里記錄一下蒟蒻自己理解的KMP算法,博客簡略,主要是大概過一下,讓自己以后能回憶起來,具體參考《大話數據結構》


KMP的精妙之處就在于它的next數組,next[i]保存的是第\(i\)個數之前的字符串前后綴相似度,也可以理解為上一個可匹配的前綴字符串下一個字符。求next數組的算法核心就在于\(j\)的回溯,他可以回溯到之前的最長可匹配前綴字串,因為這樣后綴字串就為對應的最長可匹配后綴字串,至于為什么手動模擬一遍\("ababcabababc"\)就知道了(滑稽)。

上代碼:

/*求子串T的next數組*/ void get_next(string T, int *next) {int i = 1, j = 0;next[1] = 0;//守字母next賦值0while (i < T[0])//T[0]儲存子串T長度{if (j == 0 || T[i] == T[j]){i++;j++;next[i] = j;}elsej = next[j];//字符不相同,回溯} }

求出了next數組,接下來的KMP就比較好理解了,只回溯\(j\),不回溯\(i\)

int index_KMP(string S, string T, int pos)//返回匹配到的下標 {int i = pos;//pos為S主串開始匹配的位置int j = 1;int next[255];get_next(T, next);while (i <= S[0] && j <= T[0])//i,j小于兩個字符串的大小{if (j == 0 || S[i] == T[j])//和傳統匹配算法相比增加特判{i++;j++;}elsej = next[j];}if (j > T[0])return i - T[0];//返回S中匹配字符串的開頭位置elsereturn 0;//匹配失敗 }

但是next數組還是有缺陷,比如主串為\("aaabcde"\),子串為\("aaaaax"\),當\(i=5,j=5\)的時候\(a,b\)不相等,那么\(j\)會從5,4,3一步一步回溯到1,造成時間的浪費,所以下面的nextval是一種提前判斷回溯點,如果回溯點和原來的一樣要回溯就直接回溯到最終位置了。

/*求子串T的nextval數組*/ void get_nextval(string T, int *nextval) {int i = 1, j = 0;nextval[1] = 0;//守字母next賦值0while (i < T[0])//T[0]儲存子串T長度{if (j == 0 || T[i] == T[j]){i++;j++;if (T[j] != T[j])//當前字符的前綴字符不同nextval[i] = j;//正常賦值else//當前字符前綴字符相同,將前綴字符的nextval值賦給在i上的值nextval[i] = nextval[j];}elsej = nextval[j];//字符不相同,回溯} }

轉載于:https://www.cnblogs.com/JMWan233/p/11161795.html

總結

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

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

主站蜘蛛池模板: 亚州av综合色区无码一区 | 成人小网站| 中文字幕在线有码 | 日韩av一二三区 | 亚洲视频四区 | 国产成人精品免费 | 国产精品久久久久久精 | 日韩在线三区 | 亚洲成人另类 | 肥臀熟女一区二区三区 | 国产精品第9页 | 国产成人无码一区二区在线观看 | 天天做天天爱天天爽综合网 | 校园春色中文字幕 | 人妻av无码一区二区三区 | 日韩精品极品视频在线观看免费 | 校霸被c到爽夹震蛋上课高潮 | 草久免费视频 | av5566| 男人天堂免费视频 | 亚洲精品一区二区口爆 | 人妻一区二区在线 | 日本久久一级片 | 夜夜嗨老熟女av一区二区三区 | 午夜特级毛片 | 午夜欧美精品久久久久久久 | 午夜成人在线视频 | 日韩三级观看 | 青青视频在线播放 | 中文精品一区二区三区 | 国产乱人| 国产精品一区二区久久久 | 男人天堂资源网 | 97超级碰碰碰 | 夫妻性生活自拍 | 成人妇女淫片aaaa视频 | 国产一区二区三区高清视频 | 金鱼妻日剧免费观看完整版全集 | 国产a国产 | 国产精品88久久久久久妇女 | www九九热| 国产熟女高潮一区二区三区 | 大尺度叫床戏做爰视频 | 午夜久久福利 | 在线观看无遮挡 | 手机看片日韩欧美 | 中文字幕在线高清 | 天天插天天干天天操 | 国产愉拍 | 国产精品老牛影院99av | av网站免费观看 | 豆花在线视频 | 少妇婷婷 | 性高潮影院| 日本午夜电影 | 嫩草视频一区二区三区 | 久操网在线 | 日韩精品理论 | 美女131爽爽爽做爰视频 | 天天色亚洲| 日韩三级国产精品 | 亚洲精品天堂在线 | 右手影院亚洲欧美 | 成年人黄色一级片 | 欧美精品在线观看一区二区 | 精品国产一级久久 | 久青草免费视频 | 久久国产精品一区 | 不良视频在线观看 | 69人人 | 国产ts丝袜人妖系列视频 | 日本精品在线一区 | 国产二区精品 | 伊人91| 日韩欧美综合在线 | 国产在线午夜 | 在线看免费 | 久久久夜色精品亚洲 | 特级免费毛片 | 竹菊影视日韩一区二区 | 欧美日韩国产综合在线 | 日本一区二区不卡在线观看 | 抖音视频在线观看 | 成年人在线免费看 | 操操操日日日 | 日本少妇aaa | 性欧美8khd高清极品 | 国精产品一区一区三区 | 99视屏 | 久久免费看视频 | 天堂av资源网 | 伊人免费视频二 | www,色| 岛国精品在线观看 | 久久久久99精品成人片三人毛片 | 亚洲黄色小说图片 | 99在线国产 | 国产一区二区三区电影在线观看 | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 |