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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《漫画算法2》源码整理-4 字符串匹配算法 RK KMP

發(fā)布時(shí)間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《漫画算法2》源码整理-4 字符串匹配算法 RK KMP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

RK算法

public class RabinKarp {public static int rabinKarp(String str, String pattern) {//主串長度int m = str.length();//模式串的長度int n = pattern.length();//計(jì)算模式串的hash值int patternCode = hash(pattern);//計(jì)算主串當(dāng)中第一個(gè)和模式串等長的子串hash值int strCode = hash(str.substring(0, n));//用模式串的hash值和主串的局部hash值比較。//如果匹配,則進(jìn)行精確比較;如果不匹配,計(jì)算主串中相鄰子串的hash值。for (int i = 0; i < (m - n + 1); i++) {if ((strCode == patternCode) && compareString(i, str, pattern)) {return i;}//如果不是最后一輪,更新主串從i到i+n的hash值if (i < (m - n)) {strCode = nextHash(str, strCode, i, n);}}return -1;}private static int hash(String str) {int hashcode = 0;//這里采用最簡單的hashcode計(jì)算方式://把a(bǔ)當(dāng)做1,把b當(dāng)中2,把c當(dāng)中3.....然后按位相加for (int i = 0; i < str.length(); i++) {hashcode += (str.charAt(i) - 'a');}return hashcode;}private static int nextHash(String str, int hash, int index, int n) {hash -= (str.charAt(index) - 'a');hash += (str.charAt(index + n) - 'a');return hash;}private static boolean compareString(int i, String str, String pattern) {String strSub = str.substring(i, i + pattern.length());return strSub.equals(pattern);}public static void main(String[] args) {String str = "aacdesadsdfer";String pattern = "adsd";System.out.println("第一次出現(xiàn)的位置:" + rabinKarp(str, pattern));} }

KMP算法

public class KMP {// KMP算法主體邏輯。str是主串,pattern是模式串public static int kmp(String str, String pattern) {//預(yù)處理,生成next數(shù)組int[] next = getNexts(pattern);int j = 0;//主循環(huán),遍歷主串字符for (int i = 0; i < str.length(); i++) {while ((j > 0) && (str.charAt(i) != pattern.charAt(j))) {//遇到壞字符時(shí),查詢next數(shù)組并改變模式串的起點(diǎn)j = next[j];}if (str.charAt(i) == pattern.charAt(j)) {j++;}if (j == pattern.length()) {//匹配成功,返回下標(biāo)return i - pattern.length() + 1;}}return -1;}// 生成Next數(shù)組private static int[] getNexts(String pattern) {int[] next = new int[pattern.length()];int j = 0;for (int i = 2; i < pattern.length(); i++) {while ((j != 0) && (pattern.charAt(j) != pattern.charAt(i - 1))) {//從next[i+1]的求解回溯到 next[j]j = next[j];}if (pattern.charAt(j) == pattern.charAt(i - 1)) {j++;}next[i] = j;}return next;}public static void main(String[] args) {String str = "ATGTGAGCTGGTGTGTGCFAA";String pattern = "GTGTGCF";int index = kmp(str, pattern);System.out.println("首次出現(xiàn)位置:" + index);} }

總結(jié)

以上是生活随笔為你收集整理的《漫画算法2》源码整理-4 字符串匹配算法 RK KMP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99国产精品国产免费观看 | 亚洲精品国产精品国自产 | 亚洲精品国产欧美在线观看 | 伊人日本| 国产在线观看第一页 | 日本高清一区二区视频 | 丝袜脚交免费网站xx | 亚洲特黄一级片 | 日本爱爱免费视频 | 91看毛片| 香蕉视频在线免费看 | 欧美不卡影院 | 国产精品99无码一区二区 | 亚洲最大中文字幕 | 视频一区在线观看 | 亚洲高清视频在线播放 | 国产午夜大片 | 亚洲欧美日韩中文字幕在线观看 | 日本无遮羞调教打屁股网站 | 色av综合网 | 国产又爽又色 | 九草视频在线观看 | 日韩免费av网站 | 欧美亚洲精品一区 | 五月婷视频 | 非洲一级黄色片 | 久久亚洲欧洲 | 黄色激情av | 日韩欧美高清在线观看 | 青草精品视频 | 天天玩夜夜操 | 痴女扩张宫交脱垂重口小说 | 一区二区不卡视频在线观看 | 日韩在线观看视频免费 | 欧美一级免费看 | 人妻丰满熟妇av无码区hd | 亚洲午夜18毛片在线看 | 天天尻逼 | 国产春色| 欧美性生活网址 | 国产天堂| 国产精品无码人妻一区二区在线 | 亚洲国产高清视频 | 一区二区三区偷拍 | 夜夜嗨av一区二区三区四区 | 日韩成人综合网 | 毛片精品 | 久久爱资源网 | 蜜芽一区二区 | 香蕉网在线 | 青草精品在线 | 国产精品久久久免费观看 | 无套内谢大学处破女www小说 | 亚洲在线观看av | 久久精品—区二区三区舞蹈 | 免费黄色激情视频 | 日韩在线视频看看 | 久久97| 国产欧美二区 | 国产高清一区在线 | 日韩第八页 | 亚洲在线观看av | 91老师国产黑色丝袜在线 | 国产成人精品123区免费视频 | 欧美日韩成人在线 | 伊人动漫 | 久久国产精品网站 | 久久久男人天堂 | 亚洲高清视频在线 | 亚洲视频图片小说 | 四虎图库 | 日本丰满大乳奶做爰 | 少妇紧身牛仔裤裤啪啪 | 亚洲av永久无码国产精品久久 | 久久国内精品 | 动漫av在线免费观看 | 久久久青 | 国产三区四区视频 | 欧美国产日韩视频 | 午夜片在线| 97成人资源站 | 裸体裸乳免费看 | 无码人妻精品一区二区三区不卡 | 国模在线视频 | 97中文字幕在线观看 | 欧美日韩视频在线观看免费 | 911亚洲精品| 综合国产在线 | 一区二区三区色 | 污网站在线看 | 精品少妇久久久久久888优播 | 欧美精品一区二区三区久久久竹菊 | 国产网站av | 福利午夜视频 | 精品国产自| 亚洲精品欧美在线 | jizz日本在线 | 性视频网址| 成人综合色站 |