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