推荐答案
// www.javascriptcn.com code example
function findMostFrequentChar(str) {
const charMap = {};
let maxChar = '';
let maxCount = 0;
for (let char of str) {
if (charMap[char]) {
charMap[char]++;
} else {
charMap[char] = 1;
}
}
for (let char in charMap) {
if (charMap[char] > maxCount) {
maxChar = char;
maxCount = charMap[char];
}
}
return maxChar;
}
// 示例用法
const str = "hello world";
console.log(findMostFrequentChar(str)); // 输出: "l"本题详细解读
1. 问题分析
我们需要找出字符串中出现次数最多的字符。这个问题可以通过以下步骤解决:
- 遍历字符串,统计每个字符出现的次数。
- 找出出现次数最多的字符。
2. 代码实现
- charMap:用于存储每个字符及其出现次数的对象。
- maxChar:用于存储当前出现次数最多的字符。
- maxCount:用于存储当前最大出现次数。
步骤1:统计字符出现次数
我们使用一个 for...of 循环遍历字符串中的每个字符,并在 charMap 中记录每个字符的出现次数。
步骤2:找出出现次数最多的字符
我们使用一个 for...in 循环遍历 charMap,找出出现次数最多的字符,并更新 maxChar 和 maxCount。
3. 复杂度分析
- 时间复杂度:O(n),其中 n 是字符串的长度。我们需要遍历字符串两次,一次统计字符出现次数,一次找出最大出现次数的字符。
- 空间复杂度:O(m),其中 m 是字符串中不同字符的数量。我们需要一个对象来存储每个字符的出现次数。
4. 示例
对于字符串 "hello world",字符 'l' 出现了 3 次,是出现次数最多的字符。因此,函数返回 'l'。
5. 注意事项
- 如果字符串中有多个字符出现次数相同且都是最大值,函数将返回第一个遇到的字符。
- 如果字符串为空,函数将返回空字符串
''。