"轉載自喜歡JS的無名小站" let str = "aabbccdd", 統計字元串中出現最多的字母 方法一 關鍵方法為 核心理念為:先遍歷字元串中所有字母,統計字母以及對應顯示的次數,最後是進行比較獲取次數最大的字母。 方法二 關鍵方法為 邏輯和方法一相同,只不過是通過 直接把字元串先拆成數組。效 ...
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))