给定一个字符串,写一个函数求出重复次数最多的字符及其出现次数

// 第一种方法
let abc = "asfdhdjakghksdgasdgasgwaekbasflh"
function serchStr(str){
  // 建立一个目标对象
  const target = {};
  // 遍历字符串
  for ( let i in str ) {
    if (!target[str.charAt(i)]) {
      // 第一次遍历到字符时创建key并使value为1
      target[str.charAt(i)] = 1
    }else{
      // 当遍历到重复字符时使value+1
      target[str.charAt(i)] += 1
    }
  }
  // 此时target记录了字符串中的字符及其出现次数,但如果出现次数最多的字符有复数存在想要得出结果十分复杂
}

// 第二种方法
var abc = "asfdhdjakghksdgasdgasgwaekbasflhs"
function serchStr(str){
    let target = new Map()
    for(var i in str){
        if(!target.has(str[i])){
            // 如果第一次遍历到字符,建立一个键值对并设置值为1
            target.set(str[i],1)
        }else{
            // 如果已经遍历过该字符,让键值对的值+1
            target.set(str[i],target.get(str[i])+1)
        }
    }
    let count = 0
    target.forEach(ele=>{
        // 计算出现次数最多的字符所出现的次数
        if(ele>count) count=ele
    })
    for( let [key,value] of target){
        if(value == count){
            // 输出匹配最多输出次数的键值对
            console.log(key+"=>"+value)
        }
    }
}

你可能感兴趣的:(给定一个字符串,写一个函数求出重复次数最多的字符及其出现次数)