• 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>

  • 相关阅读:
    Objective-C 在Categroy中创建属性(Property)
    iOS截屏
    iOS简易图片选择器 (图片可多选,仿微信)
    iOS 3D touch 使用技巧
    soap request by afnetworking2.X/3.X
    类似网易新闻 title栏 滚动时 文字放大&变色
    iOS 用collectionview 做的无限图片滚动 广告banner适用
    iOS WebP转换工具
    微博app中常用正则表达式
    python中property(lambda self: object())简单解释
  • 原文地址:https://www.cnblogs.com/laiso/p/8597621.html
Copyright © 2020-2023  润新知