查找字符串中出现次数最多的最长子串
yqxbc 发布时间:08-27 来源:一起学编程 浏览:23次
  标题看起来有歧义,不过举两个例子就清楚了。

  题目来Javascript罗浮宫3群(116366053),原题描述:找出一个字符串中连续出现最多的最长子串。比如abcdfeatecabcdlkxabcd中出现最多的是abcd。

  由于没有说明ababa中的aba算出现一次还是出现两次,我这把它当作出现两次,最长字串即aba。子串是两个字符以上才算子串,即ssssssss最长子串为ss。

  代码如下:
String.prototype.mostLongest = function() {
    var str = this, strLenth = str.length, longStr = [], maxNum = 1, maxLength = strLenth, arr = [], count = function(num) {
        for ( var i = strLenth - num + 1; i > -1 ; i--) {
            var temp = str.substr(i, num);
            arr[temp] = ~~arr[temp] + 1;
            if (arr[temp] > maxNum) {
                maxNum = arr[temp];
                longStr = [];
                longStr.push(temp);
                maxLength = num;
            } else if (arr[temp] == maxNum) {
                if (num > maxLength) {
                    maxNum = arr[temp];
                    longStr = [];
                    longStr.push(temp);
                    maxLength = num;
                }else if(num === maxLength){
                    longStr.push(temp);
                }
            }
        }
        num > 2 && count(num - 1);
    };
    count(strLenth);
    return longStr;
}


  出处:http://www.xiaoqiang.org/javascript/string-most-longest-substring.html。
如果你有好的win10资讯或者win10教程,以及win10相关的问题想要获得win10系统下载的关注与报道。
欢迎加入发送邮件到657025171#qq.com(#替换为@)。期待你的好消息!