zoukankan      html  css  js  c++  java
  • 查询字符串中出现频率最高的几种方法

    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;    
        }    

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

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

  • 相关阅读:
    常用知识点集合
    LeetCode 66 Plus One
    LeetCode 88 Merge Sorted Array
    LeetCode 27 Remove Element
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 448 Find All Numbers Disappeared in an Array
    LeetCode 219 Contains Duplicate II
    LeetCode 118 Pascal's Triangle
    LeetCode 119 Pascal's Triangle II
    LeetCode 1 Two Sum
  • 原文地址:https://www.cnblogs.com/cy056/p/2818251.html
Copyright © 2011-2022 走看看