1.问题描述:
任意给定一个字符串,能够找出里面出现频率最高的的字符,以及出现的具体次数。
2.解决办法一:
let s='hellooworld';
function f(s){
//获取到每个字符对应出现的次数
let obj={};//用来接收
let finalObj=[];//用来存储出现次数最多的字符信息
let len=s.length;
for(let i=0;i<len;i++){
//首先判断对应字符是否在obj这个对象中,若在,则出现的次数叠加,
//否则,则赋予初始值1
let char=s[i];
if(obj[char]){
obj[char]++;
}else{
obj[char]=1;
}
}
//console.log(obj);
//找出出现次数最多的那一项所对应的次数
let max=0;//初始值
for(let i in obj){
if(max<obj[i]){
max=obj[i];
}
}
//获取到出现的最多次数(有一种情况是有多个字符出现的次数是一样多的)
for(let i in obj){
if(obj[i]===max){
finalObj.push({"字符":i,"出现的最多的次数":obj[i]})
}
}
console.log(finalObj);
}
f(s);
解决方法二:
<!-- 获取一个字符串中出现最多的字符及出现的次数 -->
<script>
var s='gggshd';
//
function num(str){
var res=[],final={};
str=str.split('');
for(let i=0;i<str.length;i++){
debugger
var s=str[i];
var count=1;
for(let j=i+1;j<str.length;j++){
debugger
if(str[j]==s){
count++;
str.splice(j,1);
j--;
}
}
res.push({
name:s,
count
});
};
final.max=0;
for(let i of res){
debugger
if(i.count>=final.max){
final.max=i.count;
final.name=i.name;
}
};
console.log(final)
};
num(s);
</script>
3.总结:
该问题的解决思路为:
(1)找出每个字符对应的次数
(2)找出出现次数最多的字符