出一道困难的js编程题给出答案
题目:编写一个函数,接收一个字符串作为参数,返回该字符串中出现次数最多的字符及其出现次数。如果有多个字符出现次数相同,则返回其中ASCII码最小的字符。
示例输入:'hello world'
示例输出:{char: 'l', count: 3}
代码实现:
function findMaxChar(str) {
let charMap = {};
let maxChar = '';
let maxCount = 0;
for (let i = 0; i < str.length; i++) {
let char = str.charAt(i);
if (charMap[char]) {
charMap[char]++;
} else {
charMap[char] = 1;
}
if (charMap[char] > maxCount) {
maxChar = char;
maxCount = charMap[char];
} else if (charMap[char] === maxCount && char.charCodeAt(0) < maxChar.charCodeAt(0)) {
maxChar = char;
}
}
return { char: maxChar, count: maxCount };
}
解释:该函数首先创建一个对象charMap,用于记录每个字符出现的次数。然后遍历字符串,每遇到一个字符,就在charMap中对应的属性值加1。同时,如果该字符出现的次数大于maxCount,则更新maxChar和maxCount。最后返回一个包含最大出现次数字符和对应次数的对象。
原文地址: https://www.cveoy.top/t/topic/5V5 著作权归作者所有。请勿转载和采集!