题目:给出一个字符串,该字符串由若干个字符组成,求出现次数最多的字符串及其个数
例如:
输入:'abcdefag';
输出:['a:2'];
----------------
输入:'aabbccdbef';
输出:['b:3'];
----------------
输入:'aaabcccde';
输出:['a:3', 'c:3'];
思路:
1.把字符串转换为数组
2.记录每个字符在字符串中出现的次数(保存在对象中)
3.找出字符出现的最大次数(maxNum)
4.遍历对象,如果该字符出现的次数大于等于 maxNum,则存入结果 result数组 中,最终返回结果 result数组
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const str = 'abbkejsbcccwqaa';
function findLongest(str) {
const arr = str.split('');
let obj = {};
let result = [];
let maxNum = 1;
const singleKeys = Array.from(new Set(arr));
for(let i=0; i<singleKeys.length; i++) {
obj[singleKeys[i]] = 0; // 建立与字符元素对应的对象
}
for(let i=0; i<arr.length; i++) { // 获得每个字符出现的次数
for(let j=0; j<singleKeys.length; j++) {
if(arr[i] === singleKeys[j]) {
obj[arr[i]] = obj[arr[i]] + 1;
break;
}
}
}
for(let i=0; i<singleKeys.length; i++) { //得到字符出现的最大次数
if(obj[singleKeys[i]] >= maxNum) {
maxNum = obj[singleKeys[i]];
}
}
for(let i=0; i<singleKeys.length; i++) { //遍历对象,找出出现次数大于等于 maxNum 的字符,存入 result 数组中
if(obj[singleKeys[i]] >= maxNum) {
result.push(`${singleKeys[i]}:${obj[singleKeys[i]]}`)
}
}
return result;
}
console.log(findLongest(str));
</script>
</body>
</html>
结果:

网友评论