參考阮一峰的《字串匹配的kmp演算法》,用js實現一版,備忘~
//主串let str1 = 'bbc abcdab abcdabcdabdedc';
//模式串
let str2 = 'abcdabd';/**
* 算出《部分匹配表》partial match table
* @method
* @param str 要計算的字串
* @return 部分匹配表 */
let getpmt = (str = '') =>);
//字尾
let suffix = temp.substring(1).split('').map((item, index) =>);
let publiclength = 0;
//比較字首字尾得出最長公共字元長度
prefix.foreach(preitem =>
})
})pmt.push(publiclength);
k++;
}return
pmt;
}let pmt =getpmt(str2);
let m = 0;
let n = 0;
while(m < str1.length && n else
if(n > 0)
else
}if(n ===str2.length)至$`);
}else
2019-09-17 23:21:38
js實現kmp演算法 js實現KMP演算法,淺顯易懂
開始 首先,kmp演算法是用來幹什麼的?用來匹配字串,如果匹配,返回索引值。其次,為什麼要用kmp演算法?因為能簡化時間複雜度 廢話,演算法都是用來提公升效率的 然後,kmp演算法是以什麼方式簡化時間複雜度的?一般我們匹配字串可以用正規表示式,或者拿這個字串與目標字串乙個個比較,那麼就有乙個問題,如...
js實現kmp演算法 經典演算法系列 KMP演算法
網易等公司在筆試中經常會考察有關字串的題目,因此,我們要掌握相關演算法。通常這些題目會考察模式匹配,以及情況的列舉,因此,本文介紹經典的kmp模式匹配演算法和經典的全排列演算法。下面首先介紹字串相關知識。假定有字串s1,s2,strcpy s1,s2 表示將s2賦值給s1 strcat s1,s2 ...
KMP演算法實現
核心是模式串next陣列的生成 include stdio.h include string h define ns 100 intstrpos char s1 char s2 intn void next char s2,int n int main intargc,char args next ...