zoukankan      html  css  js  c++  java
  • 查找字符串中出现最多的字符

    http://www.h5course.com/plus/view.php?aid=256

    查找字符串中出现最多的字符

    将一个字符串中,出现次数最多的数字提取出来,最后输出出现最多的字符是什么,出现的次数是多少。

    题目剖析

    字符串方法的解题思路:从最初开始进行字符的截取,获取到第一个字符之后,根据这个字符进行字符串的拆分,此时,拆分后的数组中就没有这个字符了。再将数组组合成字符串之后,原来的长度与当前字符串的长度做差值,就能够获取到当前字符出现了几次。之后运用新的字符串,循环进行操作。需要注意的地方就是,对于出现次数相同的字符,也需要考虑。

    相关知识点的使用:字符串、数组方面,需要使用到charAt、split、join、push方法;正则方面,需要使用到子项。

    1、字符串方法 - 查找字符串中出现最多的字符

    /*
    * HTML5 数组字符串正则表达式
    * HTML5学堂 http://www.h5course.com
    * 独行冰海 梦幻雪冰
    */
    function getMost(str){
        var maxNum = 0;
        var maxChar = [];    //存放出现字数最多的字符数组,因为出现最多的字符可能有多个
        while(str){
            var char = str.charAt(0);
            var arr = str.split(char);
            n = str.length - arr.join('').length;
            str = arr.join('');
            if(n > maxNum){
                maxNum = n;
                maxChar = [char];    // 放置数组元素
            }else if( n === maxNum){
                maxChar.push(char);    //出现次数相同的字符 存入数组里
            }
        }
        return {'maxNum':maxNum, 'maxChar':maxChar}
    }
    var res = getMost('dsfshkgfareasfd');
    console.log('出现次数最多的字符:'+ res.maxChar + ',出现次数:' + res.maxNum);

    2、正则方法 - 查找字符串中出现最多的字符

    /*
    * HTML5 数组字符串正则表达式
    * HTML5学堂 http://www.h5course.com
    * 独行冰海 梦幻雪冰
    */
    var str = 'dsfshkgfareasfd';
    var arr = str.split('');
    arr = arr.sort();
    str = arr.join('');
     
    // 先进行排序处理,然后重新组装成字符串
    var reg = /(w)1+/g;
    var num = 0;
    var value = null;
    str.replace(reg, function($0, $1){
        if (num < $0.length) {
            num = $0.length;
            value = $1;
        };
    });
    console.log(value+'出现次数'+num);

    3、自己写的

    function maxArray(arr){
            var map={};
            for(var i=0; i<arr.length;i++){
                map[arr[i]]? map[arr[i]]+= 1: map[arr[i]] =1;
            }
            var max = 0;
            var maxItem=[];
            for(var i in map){
                if(map[i] >= max){
                    if(map[i] === max) maxItem.push(i);
                    max = map[i];
                }
            }
            return maxItem;
        }
  • 相关阅读:
    1722 最优乘车 1997年NOI全国竞赛
    5969 [AK]刻录光盘
    tarjan算法讲解
    求有向图的强连通分量个数 之 Kosaraju算法
    信使
    1405 奶牛的旅行
    P1828 香甜的黄油 Sweet Butter
    洛谷P2235 [HNOI2002]Kathy函数
    「BZOJ1010」[HNOI2008] 玩具装箱toy(斜率优化)
    BZOJ 1974 [Sdoi2010] auction 代码拍卖会(数位dp)
  • 原文地址:https://www.cnblogs.com/darr/p/5029827.html
Copyright © 2011-2022 走看看