麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

基于KMP算法JavaScript的實現方法分析

2019-11-20 22:45:12
字體:
來源:轉載
供稿:網友

算法的核心是部分匹配表和回退算法,部分匹配表的實現如下:

復制代碼 代碼如下:

function kmpGetStrPartMatchValue(str) {
    var prefix = [];
    var suffix = [];
    var partMatch = [];
    for(var i=0,j=str.length;i<j;i++){
        var newStr = str.substring(0,i+1);
        if(newStr.length == 1){
            partMatch[i] = 0;
        } else {
            for(var k=0;k<i;k++){
                prefix[k] = newStr.slice(0,k+1);
                suffix[k] = newStr.slice(-k-1);
                if(prefix[k] == suffix[k]){
                    partMatch[i] = prefix[k].length;
                }
            }
            if(!partMatch[i]){
                partMatch[i] = 0;
            }
        }
    }
    prefix.length = 0;
    suffix.length = 0;
    return partMatch;
}

//demo
var t="ABCDABD";
console.log(kmpGetStrPartMatchValue(t));
//output:[0,0,0,0,1,2,0]


回退算法實現如下:
復制代碼 代碼如下:

function KMP(sourceStr,targetStr){
    var partMatchValue = kmpGetStrPartMatchValue(targetStr);
    var result = false;
    for(var i=0,j=sourceStr.length;i<j;i++){
        for(var m=0,n=targetStr.length;m<n;m++){
            if(str.charAt(m) == sourceStr.charAt(i)){
                if(m == targetStr.length-1){
                    result = true;
                    break;
                } else {
                    i++;
                }
            } else {
                if(m>0 && partMatchValue[m-1] > 0){
                    m = partMatchValue[m-1]-1;
                } else {
                    break;
                }
            }
        }
        if(result){
            break;
        }
    }
    return result;
}
var s = "BBC ABCDAB ABCDABCDABDE";
var t = "ABCDABD";
console.log(KMP(s,t));
//output: true

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色va视频 | 国产免费一级 | 91久久综合 | 韩国精品一区二区三区四区五区 | 69性欧美高清影院 | 久久毛片 | 欧美一级做一级爱a做片性 91在线视频观看 | 欧美精品免费一区二区三区 | 久久精品视频免费 | 欧美一级不卡视频 | 久久久精品视频免费看 | 黄色特级片黄色特级片 | 又黄又爽免费无遮挡在线观看 | 久久精品视频国产 | 91在线看黄 | 桥本有菜免费av一区二区三区 | 亚洲精品欧美二区三区中文字幕 | 久在线观看福利视频69 | av电影在线网 | 在线成人一区二区 | 久久综合九色综合久久久精品综合 | 成人精品一区二区 | 久久久久久久久久亚洲 | 狠狠99 | 国产精品片一区二区三区 | 久久精品99国产国产精 | 免费一级肉体全黄毛片 | 日韩精品中文字幕在线观看 | hd欧美free性xxxx护土 | 欧美a视频| 在线成人免费av | 亚洲成人精品区 | 欧美乱论| 久久精品无码一区二区三区 | 98国内自拍在线视频 | 1024亚洲天堂 | 永久av在线免费观看 | 久久精品欧美视频 | av在线观 | 日韩a毛片免费观看 | 成人毛片视频在线播放 |