js学习笔记之字符串统计出现次数最多的字符

1、方法:把字符串中字符替换为空,并和之前的字符串的长度相减,得到已经被替换的字符的数量,依次比较获得出现次数最多的字符

var str ="adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
    var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
    var result = ''; //命名一个变量放置结果输入

    while( str != '' ){ //循环迭代开始,并判断字符串是否为空
        oldStr = str; //将原始的字符串变量赋值给新变量
        getStr = str.substr(0,1); //用字符串的substr的方法得到第一个字符(首字母)
        eval("str = str.replace(/"+getStr+"/g,'')"); //用eval函数把字符串转换为可执行的js代码,也可以写成 str = str.replace(new RegExp(getStr,'g'),"");找到字符串中此相同的字符并替换为空

        if( oldStr.length-str.length > maxLength ) { //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
            maxLength = oldStr.length-str.length; //两字符串长度相减得到最大的字符串长度
            result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数)
        }
    }

    console.log(result);//输出结果

2、方法:把字符串中字符转换为一个对象的属性,如果遇到相同的字符则该属性值+1,然后依次比较对象中属性值,得到属性值最大的属性就是出现次数最多的字符

var str = "abcdefgaaaaaadddafsa1f31df54s21fsf56sf1"; //声明一个变量放置给出的字符串
    var obj = {}; //声明一个对象用于把字符串对象化
    var letter; //声明一个变量用来放字符串字符
    for(var i = 0,len = str.length;i<len;i++){ //循环字符串字符
        letter = str[i]; //把当前字符赋值给变量
        if(!obj[letter]){ //判断对象中是否有当前变量的属性
            obj[letter] = 1; //如果没有则赋值为1
        }else{
            obj[letter]++; //如果已经有该属性就加1
        }
    }
    var max_key,max_num = 0; //声明一个变量放置数量最多的字符,声明一个变量放置出现次数最多的字符的数量并初始化为0
    for(key in obj){ //循环对象的属性
        if(max_num <obj[key]){ //比较当前属性的值是否大于变量值
            max_num = obj[key]; //如果大于变量值则把值赋给变量
            max_key = key; //同时把当前属性名的字符赋值给变量max_key
        }
    }
    document.write("字母:" + max_key + " 次数:" + max_num);

 

posted @ 2016-07-11 18:18  笑言哑哑  阅读(744)  评论(0编辑  收藏  举报