这是一道在面试中出现频率比较高的题目,因为所考到的知识点也比较多.
话不多说直接上代码
let str = 'gggjjggyyyooppoooww'
// let str = 'hello world'
function strCount(str) {
//定义一个对象用于保存str的每一项以及出现次数。
var obj = {
};
// 去除字符串中的所有空格
str = str.replace(/\s*/g,"");
//遍历str,循环其中的每一个字符,将某个字符的值及出现的个数拿出来作为json的key和value
for(var i=0;i<str.length;i++){
//判断对象中是否有当前str的值
if(obj[str[i]] === undefined){
//如果不存在 就将当前值添加到对象中,并赋值为1
obj[str[i]] = 1
}else{
//如果存在的话就让数组中已有的当前值的value值++;
obj[str[i]]++
}
}
//存储出现最多的次数
var num = 0;
//存储出现次数最多的值
var value='';
//遍历对象,利用比较法判断哪个字符出现的次数最多
for(let j in obj){
//替换次数
if(obj[j]>=num){
num=obj[j]
}
}
// 定义一个数组存放所有的符合条件的字符
let arr = []
// 遍历obj对象,将符合条件的字符添加到数组中
for (let i in obj) {
if (obj[i] == num) {
arr.push(i)
}
}
value = arr.toString()
return `字符串中出现次数最多的字符是:${
value} ; 出现最多的次数是:${
num}`
}
var result = strCount(str);
console.log(result);
输出结果如下: