判断一个字符串中出现次数最多的字母或者数组中出现次数最多的元素

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);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容