zoukankan      html  css  js  c++  java
  • 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) {

                   // 过渡结果
                    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>

  • 相关阅读:
    php if() 括号中为 真详解
    php 写入日志
    trim,rtrim,ltrim详解
    SQlite3 的简单用法。 调用本地时间
    RuntimeError at /host You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your fo
    D3.js 入门系列3
    js中const,var,let区别
    D3.js 入门系列2 — 选择元素和绑定数据
    D3.js 入门系列1
    SVG 教程03
  • 原文地址:https://www.cnblogs.com/laiso/p/8597621.html
Copyright © 2011-2022 走看看