此前大多数方法在遇到多个字符出现次数最多的情况便只能找出一个字符,我的方法较好地解决了这个问题,话不多说,直接上代码:
let str = 'abbcccdddddeeeeeeefffffff';//特意给定字符e和f都出现了7次
function findCharMore(str){
let charNum = {};
/*遍历字符串,得到对象{字符:出现次数}*/
for(let i=0;i < str.length;i++){
let e = str.charAt(i);
if(charNum[e]){
charNum[e]++;
}else{
charNum[e] = 1;
}
}
let {maxCharArr,count} = {maxCharArr:[],count:0};
/*遍历对象,找出出现次数最多的元素*/
for (let key in charNum) {
/*出现次数更多则需剔除先前的元素并添加当前元素*/
if (count < charNum[key]) {
count = charNum[key];
maxCharArr.shift();
maxCharArr.push(key);
}
/*出现次数相同则在数组添加元素*/
if (count == charNum[key] && maxCharArr.indexOf(key) == -1) {
maxCharArr.push(key);
}
}
/*返回对象{高频字符数组,最大出现次数}*/
return {maxCharArr,count}
}
console.log(findCharMore(str));
//打印结果:{ maxCharArr: [ 'e', 'f' ], count: 7 }
12345678910111213141516171819202122232425262728293031
该方法返回值为对象{高频字符数组,最大出现次数},解决了大多数方法不考虑同时有多个字符出现次数最多的情况。
原文链接:
https://blog.csdn.net/qq_24264965/article/details/109013298?utm_medium=
distribute.pc_category.none-task-blog-hot-8.nonecase&depth_1-utm_source=
distribute.pc_category.none-task-blog-hot-8.nonecase&request_id=
作者:小葱伴逗虎