欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端提高篇(九)练习3:字符串中出现次数最多的字符

程序员文章站 2024-01-04 20:41:22
...

步骤:
1.计算每个字符出现的次数
2.遍历出现次数,找到次数最多的

我的版本:

    <script>
        var mystr = 'asdfghjasdfgasdfasdaaa';
        function findMax(mystr){
            var res = {};
            for (var i = 0; i < mystr.length; i++){
                if (!res.hasOwnProperty(mystr[i])){
                    res[mystr[i]] = 1;
                }
                else {
                    res[mystr[i]] += 1;
                }
            }
            console.log(res);
            var temp = {};
            temp[mystr[0]] = res[mystr[0]];
           
            var name = mystr[0];
            for(let key  in res){
               
                if (res[key] > temp[name]){
                    delete temp[name];
                    temp[key] = res[key];
                    name = key;
                }
            }
            console.log('temp',temp);
            
        }
        findMax(mystr);
    </script>

js中的{}是对象,不是字典,且不能用方括号:[索引]来访问第n个属性名和值,
于是我单独定义一个变量name保存当前次数较大的属性名(或初始值),用于if判断时调用temp中的key和值、删除temp中的内容
前端提高篇(九)练习3:字符串中出现次数最多的字符
答案版本:

    <script>
        var mystr = 'asdfghjasdfgasdfasdaaa';
        function func(mystr){
            var res = {};
            for (var i = 0; i < mystr.length; i++){
                if (!res[mystr[i]]){
                    res[mystr[i]] = 1;
                }
                else {
                    res[mystr[i]] += 1;
                }
            }
            console.log(res);
            var maxName;
            var maxValue = -1;
            for(key in res){
               if ( maxValue < res[key]){
                    maxValue = res[key];
                    maxName = key;
               }
           }
           console.log('maxName=' + maxName+' maxValue='+maxValue);

        }
    </script>

1.没有使用hasOwnProperty()函数,直接使用隐式转换,转换成布尔值做条件判断
2.比较统计的次数时,分别定义了次数最多的字符的名和值,并且将值预设为-1,比较起来更简单,方便

上一篇:

下一篇: