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>

  • 相关阅读:
    java实现网络监听
    程序员必须知道FTP命令
    Java进化的尽头
    Oracle逻辑备份与恢复(Data Pump)
    JQuery日期选择器插件date-input
    大型高并发高负载网站的系统架构剖析
    万言万当,不如一默为官之道
    angular.js高级程序设计书本开头配置环境出错,谁能给解答一下
    安装meteor运行基本demo发生错误。
    nodejs 通过 get获取数据修改redis数据
  • 原文地址:https://www.cnblogs.com/laiso/p/8597621.html
Copyright © 2011-2022 走看看