• 判断一个字符串中出现次数最多的字符,并统计次数


    案例:

    let str = "nininihaoa";
      let obj = {}; //定义一个新对象
      //循环遍历字符串
      for (let i = 0; i < str.length; i++) {
        // charAt()方法,返回某个指定位置的字符
        let char = str.charAt(i);
        // char就是对象obj的一个属性,obj[char]是属性值,obj[char]控制出现的次数(char是键值对中的键,obj[char]是值)
        if (obj[char]) {
          obj[char]++; //次数加1
        } else {
          obj[char] = 1; //若第一次出现,次数记为1
        }
      }
      // 输出的是完整的对象,记录着每一个字符及其出现的次数
      console.log(obj);
    
      // 遍历对象,找到出现次数最多的字符的次数
      let max = 0;
      let maxChar = "";
      for (let key in obj) {
        if (max < obj[key]) {
          max = obj[key]; // max始终储存次数最多的那个
          maxChar = key; // 那么对应的字符就是当前的key
        }
      }
      console.log("最多的字符是" + maxChar);
      console.log("出现的次数是" + max);

    输出结果:

    609050915513


    以上结果中:我们可以清楚的记录每一个字符出现的次数,当有两个次数相同的字符时,也可以在对象中清楚的看到。不过还是存在些许不足,不能直接把次数最高的字符同时输出,这还需要加额外的判断条件。完美的代码应如下:

    let str = "nininihaoa";
      let obj = {}; //定义一个新对象
      //循环遍历字符串
      for (let i = 0; i < str.length; i++) {
        // charAt()方法,返回某个指定位置的字符
        let char = str.charAt(i);
        // char就是对象obj的一个属性,obj[char]是属性值,obj[char]控制出现的次数(char是键值对中的键,obj[char]是值)
        if (obj[char]) {
          obj[char]++; //次数加1
        } else {
          obj[char] = 1; //若第一次出现,次数记为1
        }
      }
      // 输出的是完整的对象,记录着每一个字符及其出现的次数
      console.log(obj);
    
      // 遍历对象,找到出现次数最多的字符的次数
      let max = 0;
      // let maxChar = "";
      for (let key in obj) {
        if (max < obj[key]) {
          max = obj[key]; // max始终储存次数最多的那个
          // maxChar = key; //那么对应的字符就是当前的key
        }
      }
      // console.log("最多的字符是" + maxChar);
      // console.log("出现的次数是" + max);
    
      // 遍历对象,找到出现次数最多的字符和其次数
      for (let key in obj) {
        if (obj[key] == max) {    //对应最多的字符就是当前的key
          //console.log(key);
          console.log("最多的字符是" + key);
          console.log("出现的次数是" + max);
        }
      }

    注意:最后一次遍历(循环)对象的目的是:当符合obj[key] == max条件时,直接把次数最高的字符同时输出。比较清晰!

    输出结果:

    609050915514

    友情提示:

    用数组(存在缺点,当出现最多的字符不只一个时,只能找到一个)

    所以用推荐使用对象!!!

  • 相关阅读:
    php入门到精通(复习笔记)
    MySQL的基础(优化)3
    php之Apache压力测试
    DOS下常用命令
    php连接MySQL分析
    php-memcached详解
    php 四种基本排序算法
    MySQL的基础(优化)2
    SQL入门之集合操作
    SQL入门之多表查询
  • 原文地址:https://www.cnblogs.com/meijifu/p/12861264.html
Copyright © 2020-2023  润新知