统计字符串中出现最多的字母

Posted 严俊东的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计字符串中出现最多的字母相关的知识,希望对你有一定的参考价值。

转载自喜欢JS的无名小站

let str = "aabbccdd", 统计字符串中出现最多的字母

方法一

关键方法为 String.prototype.charAt
核心理念为:先遍历字符串中所有字母,统计字母以及对应显示的次数,最后是进行比较获取次数最大的字母。

/**
 * 获取字符串中出现次数最多的字母
 * @param {String} str
 */
function getChar(str) {
    if (typeof str !== 'string') return // 判断参数是否为字符串
    const obj = new Object() // 键为字母,值为次数
    for (let i = 0; i < str.length; i ++) { // 遍历字符串每一个字母
        let char = str.charAt(i) // 当前字母
        obj[char] = obj[char] || 0 // 保证初始值为0
        obj[char] ++ // 次数加1
    }
    let maxChar // 存储字母
    let maxNum = 0 // maxChar字母对应的次数
    for(let key in obj) { // 遍历obj
        if (obj[key] > maxNum) {
            maxChar = key // 比较后存储次数多的字母
            maxNum = obj[key] // 以及它对应的次数
        }
    }
    return maxChar // 返回结果
}

let str = 'aabbbccdd'
console.log('出现次数最多的字母为:' + getChar(str))

方法二

关键方法为 String.prototype.split
逻辑和方法一相同,只不过是通过 split 直接把字符串先拆成数组。效率上要比方法一差。

/**
 * 获取字符串中出现次数最多的字母
 * @param {String} str 
 */
function getChar(str) {
    if (typeof str !== 'string') return // 判断参数是否为字符串
    const obj = new Object() // 键为字母,值为次数
    const arr = str.split('')
    for (let i = 0; i < arr.length; i++) { // 遍历字符串每一个字母
        let char = arr[i] // 当前字母
        obj[char] = obj[char] || 0 // 保证初始值为0
        obj[char]++ // 次数加1
    }
    let maxChar // 存储字母
    let maxNum = 0 // maxChar字母对应的次数
    for (let key in obj) { // 遍历obj
        if (obj[key] > maxNum) {
            maxChar = key // 比较后存储次数多的字母
            maxNum = obj[key] // 以及它对应的次数
        }
    }
    return maxChar // 返回结果
}
let str = 'aabbbccdd'
console.log(getChar(str))

以上是关于统计字符串中出现最多的字母的主要内容,如果未能解决你的问题,请参考以下文章

统计字符串中出现最多的字母

第 32 题:如何统计一个字符串出现最多的字母?

闲谈如何统计字符串中出现最多的字母与个数

字母统计

java一个字符串中出现次数最多的字符以及次数

字母统计 思想值得学习