您现在的位置:首页 >> 前端 >> 内容

公共项查找---04_多个数组查找子字符串

时间:2017/5/5 17:02:00 点击:

  核心提示:公共项查找---04_多个数组查找子字符串script/** 实现过程:* 1.将arr_str的每一项按照长度升序排列* 2.找到最短的一项,然后将它的所以子项全部罗列出来,形成一个arrAll数组...

公共项查找---04_多个数组查找子字符串



<script>
    /*
    * 实现过程:
    *   1.将arr_str的每一项按照长度升序排列
    *   2.找到最短的一项,然后将它的所以子项全部罗列出来,形成一个arrAll数组
    *   3.用正则与arr_str剩下的三项进行匹配,形成一个二维数组,类似[[a,a,a], [b,b,b]]
    *   4.遍历这个二维数组,如果其中的子项(数组)的长度 = arr_str.length,
    *     那么找出子项中第一个最长的那个字符串
    *
    * */

    var arr_str = ['asdshow','helloshow','showhi','hahashowhehe'];  //show

    function find(arr) {
        //  1.将arr_str的每一项按照长度升序排列
        arr.sort(function (a, b) {
            return a.length - b.length;
        });
        //console.log(arr);
        // 2.找到最短的一项,然后将它的所以子项全部罗列出来,形成一个arrAll数组
        let strArr = [];
        let firstStr = arr.shift(); // showhi
        //console.log(firstStr);
        for ( let i = 0; i < firstStr.length; i++ ) {
            for ( let j = i + 1; j <= firstStr.length; j++ ) {
                strArr.push( firstStr.substring(i, j) );
            }
        }
        //console.log(strArr);  // s,sh,sho,show,showh,showhi,h,ho....
        // 3.用正则与arr_str剩下的三项进行匹配,形成一个二维数组,类似[[a,a,a], [b,b,b]]\
        var count = 0; // 最长的字符串的长度
        var result = ''; // 最长的字符串
        for ( var i = 0; i < strArr.length; i++ ) {
            var wholeArr = [];
            var re = new RegExp(strArr[i]);
            for ( var j = 0; j < arr.length; j++ ) {
                var reArr = arr[j].match(re);
                if (reArr) {
                    wholeArr = wholeArr.concat(reArr);
                }
            }
            // 遍历新数组,如果其中的子项(数组)的长度 = arr_str.length,
            // 找出子项中第一个最长的那个字符串
            if ( wholeArr.length === arr.length ) {
                //console.log(wholeArr);
                if ( wholeArr[0].length > count ) {
                    count = wholeArr[0].length;
                    result = wholeArr[0];
                }
            }
        }
        return result;
    }
    console.log(find(arr_str));
</script>

作者:网络 来源:光明大神棍的博客
  • 上一篇:二分法查找
  • 下一篇:Spring简介