如题,举例:str = "abcdefgaddda", 结果应是d出现的次数最多,为4.
function findCharAndLen(str){
let arr = str.split(""); //将字符串转为数组
let s = new Set(arr); //Set的特性可以用来数组去重
let map = new Map(); //此时创建一个Map对象,为之后字符和次数的一对一对应做准备
let numArr = []; //创建一个存字符出现次数的数组
let char = '';
let len = 0;
Array.from(s); //去重后的set对象转为数组,Array.from()方法只能针对Set、Map、Array 三种结构使用
s.forEach((value, index, array) => {
map.set(patch(value, str), value); //字符出现次数作为key,字符作为value
numArr.push(patch(value, str)); //将各字符出现次数存在数组中
}) ;
numArr.sort((a, b) => b-a); //数组值从大到小排序
len = numArr[0]; //倒序排列,数组第一个下标对应的就是最大次数
char = map.get(len); //Map的key,value一一对应,通过map.get(key),可以得到字符值
return {len, char};
}
function patch(re, s){
re = eval(`/${re}/ig`);
return s.match(re).length;
}
let str = "abcdefgaddda";
findCharAndLen(str);
其实解题的思路都是大同小异的,没什么难的,这里发这篇文章,主要是加入了些es6的知识点。
以上,在浏览器跑通过了。