查询字符串中出现频率最高的几种方法

1 概述

  要想在字符串中搜索出出现频率最高的字符串以及频率,需要涉及到JS中字符串以及数组的操作.

  大致的思路有三种:

    1:替换首字符,比较字符串前后长度之差,在进行比较。

    2: 将字符串重新排列成有序字符串,在通过正则获取各个不同部分组成的数组。

    3: 将字符串进行遍历统计。

2 实例

  假如 var str = 'asdasassdsaa';

  方法一

    function getMost1(str){
            var most = [], num = 0;
            while( str != '' ){
                var ori = str, target = str.substr(0,1);
                var re = target;
                if(/[\$\(\)\*\+\.\?]/.test(target)) 
                    re = '\\' + re;
                str = str.replace(new RegExp(re, 'g'), '');  
                var diff = ori.length - str.length; //
                if(diff > num) {
                    num = diff;
                    most = [target];
                } else if (diff == num) {
                    most.push(target);
                }
            }
            return num + '  ' + most;
    }

  方法二

function getMost2(str){
    var most = str.split('').sort().join('').match(/(.)\1*/g);
    most = most.sort(function(a,b){return a.length-b.length}).pop();
    return most.length + '  ' + most[0];
} 

 

  方法三

    function getMost3(str){
        for(var i in str){
            var mem = str[i];
            o[mem]?o[mem]++:o[mem] = 1;
        }
        var newArr = [];
        var base = 0;
        var letter = [];
        for(var i in o){
            var mem = o[i];
            if(mem>base){
                letter = [];
                base = mem;
                letter.push(i);
            }else if(mem == base){
                    letter.push(i);
            }
        }
        return base + '  ' +letter;    
    }    

 

其中方法二虽然简洁,但是只能得到出现频率最高之一。

有兴趣的话,可以拆分下,单步调试。

posted @ 2012-12-14 16:17  积跬步  阅读(522)  评论(0编辑  收藏  举报