成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

字符串匹配算法—單模式匹配—RK 算法

開發 前端
RK 算法的思路是這樣的:我們通過哈希算法對主串中的 n-m+1 個子串分別求哈希值,然后逐個與模式 串的哈希值比較大小。如果某個子串的哈希值與模式串相等,那就說明對應的子串和模式串匹配了(這 里先不考慮哈希沖突的問題)。

一、RK算法

RK 算法的全稱叫 Rabin-Karp 算法,是由它的兩位發明者 Rabin 和 Karp 的名字來命名的。

每次檢查主串與子串是否匹配,需要依次比對每個字符,所以 BF 算法的時間復雜度就比較高,是 O(n*m)。我們對樸素的字符串匹配算法稍加改造,引入哈希算法,時間復雜度立刻就會降低。

RK 算法的思路是這樣的:我們通過哈希算法對主串中的 n-m+1 個子串分別求哈希值,然后逐個與模式 串的哈希值比較大小。如果某個子串的哈希值與模式串相等,那就說明對應的子串和模式串匹配了(這 里先不考慮哈希沖突的問題)。因為哈希值是一個數字,數字之間比較是否相等是非??焖俚?,所以模 式串和子串比較的效率就提高了。

可以設計一個hash算法: 將字符串轉化成整數,利用K進制的方式 數字1-0 :

10進制 123的拆解

100+20+3=123

小寫字母a-z:26進制

大小寫字母a-Z:52進制

大小寫字母+1-0:62進制

以只是小寫字母的26進制為例

字符串“abc”轉化成hash值的算法是:

a的ASCII碼是97

b的ASCII碼是98

c的ASCII碼是99

65572+2548+99=68219

字符串“abc”轉化成hash值是68219

如果覺得計算太麻煩也可以從97開始,

即 字符串“abc”轉化成hash值的算法是:

0+26+2=28 代碼如下:

/**
* 字符串hash值匹配
*/
public class RKalth {
public static boolean isMatch(String main, String sub) {
//算出子串的hash值
int hash_sub=strToHash(sub);
for (int i = 0; i <= (main.length() - sub.length()); i++) {
// 主串截串后與子串的hash值比較
if (hash_sub==strToHash(main.substring(i, i + sub.length()))) {
return true;
}
}
return false;
}
/**
* 支持 a-z 二十六進制
* 獲得字符串的hash值
* @param src
* @return
*/
public static int strToHash(String src) {
int hash = 0;
for (int i = 0; i < src.length(); i++) {
hash *= 26;
hash += src.charAt(i) - 97;
}
return hash;
}
public static void main(String[] args) {
System.out.println(isMatch("abcvdcd","vdcd"));
}
}

時間復雜度

RK 算法的的時間復雜度為O(m+n)

m:為匹配串長度

n:為主串長度

應用

適用于匹配串類型不多的情況,比如:字母、數字或字母加數字的組合 62 (大小寫字母+數字)

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2013-05-06 10:54:08

字符串字符串匹配KMP算法

2023-12-15 10:27:01

暴力匹配算法Python字符串

2013-05-06 10:49:21

Boyer-Moore算法字符串匹配

2024-07-03 11:23:14

2011-03-15 15:20:46

2009-08-07 14:46:59

C#匹配字符串

2010-11-26 13:58:48

MySQL字符串匹配

2024-06-26 07:58:06

2021-09-03 09:41:36

字符串時間復雜度

2023-02-26 22:33:32

字符串排列算法

2016-12-30 13:32:24

字符串算法代碼

2022-08-29 15:26:58

MySQLSQL模式

2016-12-30 13:16:51

字符串算法代碼

2017-03-20 10:14:03

語音識別匹配算法模型

2009-09-16 17:02:15

正則表達式匹配字符串

2014-10-30 14:19:13

本文由簡單的字符串匹配

2021-09-10 08:31:54

翻轉字符串單詞

2009-08-11 10:26:49

C#算法C#字符串反轉

2009-12-25 15:51:38

shell特殊字符

2009-08-14 17:44:46

C#中使用正則表達式匹
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕av一区 | 国产人成精品一区二区三 | 欧美极品在线 | 高清国产午夜精品久久久久久 | 国产 欧美 日韩 一区 | 看av网 | 久久激情视频 | 91天堂| 国产成人99久久亚洲综合精品 | 欧美精品三区 | 国产精品一区久久久 | 中文字幕黄色大片 | 色又黄又爽网站www久久 | 伊人伊成久久人综合网站 | 伊人精品视频 | 亚洲精品日本 | 91资源在线 | 国产成人精品免高潮在线观看 | 在线一区视频 | 一道本一区二区 | 久久成人国产精品 | 一区二区三区精品在线视频 | 日日摸夜夜添夜夜添精品视频 | 国内精品视频在线观看 | 国产精品一二区 | 毛片一级片 | 在线免费中文字幕 | 91在线网站 | 欧美一级在线观看 | 国产精品美女久久久久 | 久久大陆 | 国产在线一区二区三区 | 免费在线性爱视频 | 成人精品鲁一区一区二区 | 热re99久久精品国产99热 | 国产一级毛片视频 | 国产情侣久久 | 亚洲精品视频在线播放 | 在线一区二区三区 | 国产在线高清 | 精品中文在线 |