統計字符串中出現最多的字母


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))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM