判断字符串出现次数最多的字符 及 次数

本文详细解析了一种用于统计字符串中各字符出现频率的算法,通过使用对象存储字符及其出现次数,实现查找出现次数最多的字符及其频次。文章介绍了算法的具体步骤,包括初始化对象、遍历字符串、更新字符计数、确定最大频率以及筛选最高频字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析

题目的意思大致就是找出每个字符出现的次数,然后比较大小。那么每个字符都应该对应它出现的次数。既然是一一对应的,那我们就想到用对象的keyvalue来储存字符和其出现的次数。

具体做法

  • 新建一个空对象obj
  • 遍历给定的字符串
  • 接下来就是最重要的 把字符作为key值,对应次数作为value添加给obj
  • 判断obj是否存在当前循环的字符,有则让value即次数++,否则把当前项作为key添加给obj
  • 然后是比较次数的大小。
  • 这时我们需要一个变量来储存objvalue值。
  • 声明一个变量num,并设置初始值为0
  • 遍历obj,比较其value值与num值的大小。大则将其value值赋给num,否则num值不变,从而找出最大的value值。
  • 这时我们需要一个数组来储存与最大的value值即num匹配的key值。因为这样的key值可能不止一个,所以用一个数组来储存。
  • 新建一个空数组keys
  • 遍历obj,判断与num匹配的key值,并添加在keys内。
  • 因为keys是个数组,需要用join转换成字符串。
  • 最后就可以返回出现次数最多的字符及次数了。
let str = "http://www.sxqyuming.com";
function word(str){
    let obj = {};
    let num = 0;
    let keys = [];
    for(var i=0;i<str.length;i++){
        let strs = str[i]
        if(!obj[strs]){
            obj[strs] = 1;
        }else{
            obj[strs]++
        }
    }
    for(var i in obj){
        if(num<obj[i]){
            num = obj[i]
        }
    }
    for(var i in obj){
        if(obj[i]==num){
            keys.push(i)
        }
    }
    return "出现次数最多的字符为"+keys.join('和')+",出现次数为"+num+"次。"
}
console.log(word(str))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值