//算法题: 统计一个字符串出现最多的字母和出现的次数
var str = "yuiopoklghonmkloppsdfsahdsfhew",arr = [],diff = [],we = {};
for(let i = 0;i< str.length;i++){
let mm = str.charAt(i);
arr.push(mm);
}
//console.log(arr);//字符串改成数组
for(let j = 0;j < arr.length;j++){
if(diff.indexOf(arr[j]) == -1){
diff.push(arr[j]);
we[arr[j]] = 1;
}else{
//console.log(j,arr[j]);
we[arr[j]] += 1;
}
}
//console.log(diff);
//console.log(we);
//遍历对象取出最大value的键值对以及对应的key
let mid = 0,ke = null;
for(var h in we){
//console.log(we[h]);
if(we[h] >= mid){
mid = we[h];
ke = h
}else{
mid = mid;
}
}
console.log("最大的key:"+ke,"最大的次数为:" + mid);
注意:我这个里面没有考虑如果字符串中重复的字符一样多的好几个,最后输入只会输入最后一个的,比如:str = "uuoopp",显示没考虑全!
总结:花了一会,自己想着写的,不够优化,但是是自己的东西!说下我的解决思路,首先将字符串分割成了arr数组,然后将第一次重复的所有元素放进新数组diff,最后用对象we存放所有的重复元素以及对应的次数,然后遍历对象we,取出最大值以及最大值对应的key。