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

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

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 }

 

posted @ 2016-12-29 01:39  NT.Wang  阅读(323)  评论(0编辑  收藏  举报