js简单的面试题:找出字符串中出现次数最多的字符

本文介绍两种高效的方法来查找字符串中出现次数最多的字符及其频率。一种是使用对象存储字符计数,另一种是利用正则表达式匹配重复字符。通过实例演示了如何实现这些方法,并对比了它们的优缺点。

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

简单的对象赋值法

    let testStr = 'adsadafgxzcnvzbsadadadsaddd';
        function getMax(str) {
            debugger;
            let obj = {};
            for(let i in str) {
                if(obj[str[i]]) {
                    obj[str[i]]++;
                }else{
                    obj[str[i]] = 1;
                }
            }
            let keys = Object.keys(obj); // 获取对象中所有key的值返回数组
            let values = Object.values(obj); // 获取所有value返回数组
            let maxVal = Math.max(...values);
            // Math.max可以找出传入参数的最大值,如:Math.max(1,2);这里可使用es6中的解构,也可以使用Math.max.apply(Math,values)可认为是apply(Math.max, arr) 然后,arr是一个参数列表,对于max方法,其参数是若干个数,即Math.max(a, b, c, d, ...)
            console.log(keys[values.indexOf(maxVal)],maxVal);
        }
        getMax(testStr);

正则

	let testStr = 'adsadafgxzcnvzbsadadadsaddd';
    let stringMax = (str) => {
        debugger;
            str = str.split('').sort().join('');
            var s = str.match(/(\w)\1*/g); //主要的是这个步骤
            if(s === null) {
                return str[0];
            }
            var out = s.sort((a,b) =>b.length - a.length);
            console.log(out[0][0],out[0].length);
        };
        stringMax(testStr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值