用js实现KMP字符串匹配算法
function KMPAlgorithms(mumStr, subStr){ for(var i = 0, len = mumStr.length; i < len; i++){ if(mumStr[i] != subStr[0]){ continue; } var match = '', j = 0, k = i; do{ match += subStr[j]; }while(mumStr[++k] && subStr[++j] && mumStr[k] == subStr[j]); if(match == subStr){ return i; } i += match.length - getPartGrid(match) - 1; } return -1;
/*获取子串前后缀匹配的长度*/ function getPartGrid(subStr){ for(var i = 0, len = subStr.length - 1, str = '', length = 0; i < len; i++){ str += subStr[i]; var cmp = subStr.substring(len - i); if(str == cmp){ length = i + 1; } } return length; } }
KMP算法作为字符串匹配最为常用的算法。虽然要理解它比较难,但是作为一个程序员来讲,我觉得理解这个算法是最基础的。KMP算法的基础原理就不一一缀述了,网上有很多关于该算法的资料。我就用我自己的理解来实现该算法。

浙公网安备 33010602011771号