zoukankan      html  css  js  c++  java
  • 获取字符串中出现次数最多的字符

    var stringUtil = {};
    stringUtil.getMaxLengthCharacter = function(s){
        var info = {},  getObj, getMaxLength;
        //把字符和出现次数存放在对象中
        getObj = (function(s){
            var obj = {};
            for(var i = 0, j = s.length; i < j; i++){
                if(obj[s[i]]){
                    obj[s[i]] += 1;
                }else{
                    obj[s[i]] = 1;
                }
            };
            return obj;
        })(s);
    console.log(getObj);
    //考虑到一个字符串中次数最多的可能不止一个,所以需要找出最大数 getMaxLength = (function(){ var max = 0; for (var i in getObj) { if (getObj[i] > max) { max = getObj[i]; } }; return max; })();
    console.log(getMaxLength);
    for(var i in getObj){ if(getObj[i] === getMaxLength){ info[i] = getObj[i]; } }; return info; } //调用 stringUtil.getMaxLengthCharacter("adbgggghjkkkk");

    结果依次:

    关于上述代码优化:

    1、首先,对数据值需要做下判断:如果是空值或非字符类型,则没必要继续进行。

       平时写代码时需要注意多做非空判断和数值判断,特别是处理后台接口数据的时候,数据都是后台返回来的,不知道到底是什么样的数据,有没有数据,所以判空是比较重要的。

    2、其次,getMaxLength函数可以合并在getObj里面:合并以后少了for循环,多个if判断,但代码量少了很多。

    var stringUtil = {};
    stringUtil.getMaxLengthCharacter = function(s){
        var info = {},  getObj, max = 1;
        //把字符和出现次数存放在对象中
        getObj = (function(s){
            var obj = {};
            if(!s || typeof s !== "string") return false;
            for(var i = 0, j = s.length; i < j; i++){
                if(obj[s[i]]){
                    obj[s[i]] += 1;
                    if(obj[s[i]] > max){
                        max = obj[s[i]];
                    }
                }else{
                    obj[s[i]] = 1;
                }
            };
            return obj;
        })(s);
    
        for(var i in getObj){
            if(getObj[i] === max){
                info[i] = getObj[i];
            }
        };
        return info;
    }
    //调用
    stringUtil.getMaxLengthCharacter("adbgggghjkkkk");
  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/goloving/p/7050933.html
Copyright © 2011-2022 走看看