• 一个字符在字符串中出现最多的次数的打印


    今天朋友共享了一道js中经典的面试题,需求是这样的

    给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出

     刚拿到这道题的第一感觉便是定义一个count计时器,然后通过for循环 里面嵌套if判断,但是这样的话貌似并不是一个很好的解决方案

    因为你并不知道该字符串是数字还是字母和 特殊符号,又或者是这三者的组合形式,所以,这种方案就显得极其的麻烦和繁琐了

    所以有一个算是比较好的解决方案,代码如下

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>一个字符在字符串中出现最多的次数的打印</title>
    <script type="text/javascript">
    //判断一个随意字符串中出现次数最多的字母,并判断出出现过几次
    var str = 'asdfssaaasasasasaa';
    var json = {};//1.1构建一个空的对象,将来是要装载key和value var json={"a":1,"s":1};
    //1.2依次剥离大字符中的每个字符,然后构建json
    for (var i = 0; i < str.length; i++) {
    //判断该字符串截取出来的这一个字符是不是在join对象中存在
    if (!json[str.charAt(i)]) {//str.charAt(i)拿到到的是其中的一个字符
    //如果不存在,则以该单字符作为join对象的键值,将其values赋值为1
    json[str.charAt(i)] = 1;
    } else {
    //如果存在,则找到该键值对应的value值 将其自增
    json[str.charAt(i)]++;
    }
    };
    //定义一个最大值,用于保存出现次数最多的字符的次数
    var iMax = 0;
    var iIndex = '';
    //迭代已经有值得对象
    //1.3 打擂算法循环输出join中保存的数据 统计出现最多次数的字符以及次数
    for (var i in json) {
    //每一个item都代表着一个join对象的键值(也就是字符)
    //i代表的是key字符 eg:a s d f 
    if (json[i] > iMax) {
    
    iMax = json[i];//iMax最多的索引
    iIndex = i;
    }
    }
    alert('出现次数最多的是:' + iIndex + '出现' + iMax + '');
    </script>
    
    
    </head>

    因为每行代码都标注了详细的注释,下面我就不再重复的解释代码了

  • 相关阅读:
    小喵的在线共享编辑器
    简易漫画网站搭建-漫画喵Server版
    爬虫-漫画喵的100行逆袭
    应用OpenMP的一个简单的设计模式
    基于Caffe的Large Margin Softmax Loss的实现(中)
    基于Caffe的Large Margin Softmax Loss的实现(上)
    Oracle GoldenGate OGG管理员手册
    Spark快速大数据分析之RDD基础
    Apache Spark大数据分析入门(一)
    一文教你看懂大数据的技术生态圈:Hadoop,hive,spark
  • 原文地址:https://www.cnblogs.com/WuXuanKun/p/5605476.html
Copyright © 2020-2023  润新知