js實現最長子串算法

var arr=["weeweadbshow","jhsaasrbgddbshow","ccbshow"];
function Longest(Arr){正則表達式

//字符串長度排序,優先選擇最短的字符串,儘量的減小性能開支
Arr=String_ArraySort(Arr);
var wholeArr=[]  //最短字符串所能產生的全部子串
        ,fristStr=Arr.shift()  // 以最短子串爲基準
        , count=0   //結果長度
        ,result=""; //結果數組

//截取子串
for (var i=0;i<fristStr.length;i++) {
     for (var j=i+1;j<=fristStr.length;j++) {
         wholeArr.push(fristStr.substring(i,j));
     }
}函數

//遍歷全部的子串
for (var i=0;i<wholeArr.length;i++) {
      var AllArray=[];  //創建一個結果過渡數組性能

      //使用正則表達式來檢索其餘的字符串
      var patt=new RegExp(wholeArr[i]);
       for (var j=0;j<Arr.length;j++) {
          var reArr=Arr[j].match(patt);  //使用正則表達式來檢索,match函數直接返回結果
              if (reArr) {   //若是沒檢索到,返回一個false值,若是匹配到就返回結果
                     AllArray=AllArray.concat(reArr);   //向結果過渡函數添加值
                } 
       }
      if (AllArray.length==Arr.length) { //驗證是否在其餘字符串中是否都匹配到了子串排序

           if (AllArray[0].length>count) {ip

               // 過渡結果
                count=AllArray[0].length;
                result=AllArray[0];
            }
       }
}
return result;
}
function String_ArraySort(Arr){
       return Arr.sort(function(str1,str2){
              return str1.length-str2.length;
   })
}
console.log(Longest(arr));
</script>字符串

相關文章
相關標籤/搜索