此前大多数方法在遇到多个字符出现次数最多的情况便只能找出一个字符,我的方法较好地解决了这个问题,话不多说,直接上代码:
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
该方法返回值为对象{高频字符数组,最大出现次数},解决了大多数方法不考虑同时有多个字符出现次数最多的情况。
【免责声明:本文图片及文字信息均由千锋重庆web前端培训小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】