首页 > 技术文章 > js - 获取字符串出现最多的字符和次数

sunidol 2019-09-12 16:12 原文

方法一:

  /**
       * @param {String}str 只接受字符串类型
       * @return{JSON} key:出现最多字符, value:出现次数;  数组类型不是String类型,则返回空对象
       **/
    function getMax(str){
    	let hash = {};
    	let num = 0;
    	let json = {}; //返回的对象
    	//判断是否是字符串
    	if(Object.prototype.toString.call(str) != "[object String]") {
    		return json;
    	}
    	for(let i = 0; i < str.length; i++){
    		if(hash[str[i]] === undefined){
    			hash[str[i]] = 1
    		}else{
    			hash[str[i]]++
    		}
    	}
    	for(let item in hash){
    		if(num < hash[item]){
    			num = hash[item]
    			json = {"字符": item, "次数": hash[item]}
    		}
    	}
    	return json;
    }

方法二:

function getMax(str){
       	 let obj = {};
       	 let num = 0;
       	 let letter = '';
       	 for(let i = 0; i < str.length; i++){
       	 	if(obj[str[i]]){
       	 		obj[str[i]]++;
       	 		if(num < obj[str[i]]){
       	 			num = obj[str[i]];
       	 			letter = str[i]
       	 		}
       	 	}else{
       	 		obj[str[i]] = 1;
       	 	}
       	 }
       	 
       	 return letter + ':' + num
       }

方法三:

var s = 'aaabbbcccaaabbbaaabbbbbbbbbb';
	   var a = s.split('');
	   a.sort();
	   s = a.join('');
	   var pattern = /(\w)\1*/g;
	   var ans = s.match(pattern);   
	   ans.sort(function(a, b) {
	       return b.length - a.length;
	    });
	   console.log(ans);
	   console.log(ans[0][0] + ': ' + ans[0].length);

推荐阅读