面试题——找出出现次数最多的字符

在面试中,这道题出现的概率相对来说还是比较高的,主要考到数组和字符串的灵活转换,而使用多种方法来完成则是加分项,体现了思维的开阔性。

JSON方法

function test2(str) {
    var json = {};
    var arr = str.split('');

    for (var i = 0; i < arr.length; i++){
        if (!json[arr[i]]){
            json[arr[i]] = 1;
        }else {
            json[arr[i]]+=1;
        }
    }
    var key = '';
    var value = 0;
    for (var name in json){
        if (json[name] > value){
            value = json[name];
            key = name;
        }
    }
    return  '出现次数最多的字符是:'+key+','+'出现的次数是'+value;
}

 

正则方法 : 相比之下正则方法要简单一些

 1 function test(str) {
 2     str = str.split('').sort().join('');//把字符串排序
 3     var re = /(\w)\1+/g; //\1 代表和\w 相同的字符,多次匹配+
 4 
 5     var key = '';
 6     var value = 0;
 7     str.replace(re,function (a,b) {
 8        // alert(a+'='+b) // aaa = a;
 9         if (value < a.length){
10             value = a.length;
11             key = b;
12         }
13     })
14     return '出现次数最多的字符是:'+key+','+'出现的次数是'+value;
15 }

 

转载于:https://www.cnblogs.com/NTWang/p/6231480.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值