计算一个字符串中出现频率最高的字符和次数

321 阅读1分钟
    function findMaxDuplicateChar(str) {
      // 定义最大频率
      let maxValue = 1;
      // 定义出现的字符,有可能频率相等所以是数组
      let maxChar = [];
      let obj = {};
      for (let s = 0; s < str.length; s++) {
        let k = str[s];
        if (k === " ") continue;
        // 利用对象的key做算法,若key(字符)不存在则初始化value(频率)为1,key存在(字符重复)则value(频率)+1
        obj[k] = obj[k] ? (++obj[k] ) : 1;
        //  如果总是有大于最大的频率 则为一个,//  如果有相等则 并列push到数组里
        if (obj[k] >= maxValue) {
          obj[k] > maxValue ? (maxChar = [k]) : maxChar.push(k);
          maxValue = obj[k];
        }
      }
      maxChar = maxChar.length <= 1 ? maxChar[0] : maxChar;
      return { maxValue, maxChar };
    }
    console.log(findMaxDuplicateChar(str)); //{maxValue:3,maxChar:[6,9]}