1. 判断一个字符串中出现次数最多的字母:
function maxCount(str) {
var obj={};
for(var i=0;i<str.length;i++){
var key=str[i];
if(obj[key]){
obj[key]++;
}else{
obj[key]=1;
}
}
var maxCount=0;
var maxString="";
for(var key in obj){
if(maxCount<obj[key]){
maxCount=obj[key];
maxString=key;
}
}
return "出现次数最多的字母:"+maxString+"出现了"+maxCount+"次";
}
2. 判断数组中出现次数最多的元素:
function maxCountElement(arr) {
var obj={};
for(var i=0;i<arr.length;i++){
var key=arr[i];
if(obj[key]){
obj[key]++;
}else{
obj[key]=1;
}
}
var maxCount=0;
var maxElement=arr[0];
for(var key in obj){
if(maxCount<obj[key]){
maxCount=obj[key];
maxElement=key;
}
}
return "该数组中出现次数最多的元素:"+maxElement+"出现了"+maxCount+"次";
}
注: 上面的代码有一点小的瑕疵,如果数组中两个不同的元素出现的次数一样多,结果只会体现第一次遇见的次数最多的 元素,和它次数一样多的其他元素会被忽略掉。
改进方案代码如下:
function maxCountElement(arr) {
var obj={};
for(var i=0;i<arr.length;i++){
var key=arr[i];
if(obj[key]){
obj[key]++;
}else{
obj[key]=1;
}
}
var maxCount=0;
var maxElement=arr[0];
var eq = [];
for(var key in obj){
if(maxCount < obj[key]){
maxCount=obj[key];
maxElement=key;
eq.length=0;
}else if(maxCount === obj[key]){
eq.push(key);
}
}
if(eq.length > 0){
for(var j=0;j<eq.length;j++){
maxElement+=','+eq[j];
}
}
return "该数组中出现次数最多的元素:"+maxElement+"-----出现了:"+maxCount+"次";
}
var arr = [1,2,2,3,3,4,5,6];
var res = maxCountElement(arr);
console.log(res);