獲取字符串中出現次數最多的字符

偶然看到的一個題目,從一串字符串裏獲取出現次數最多的字符並返回長度

幾番簡化,用一串代碼解決,以下:
加入字符串已有:let str = 'awfoeifaoifauwefa';數組

let outcome0 = Array.from(new Set(str.split(''))).map((a,b) => [a,str.match(new RegExp(a,'g')).length]).sort((a,b) => b[1] - a[1]).slice(0,1);
console.log(...outcome0)

下面來個步驟分析版:code

let arr = str.split('');//分割字符
let _arr = Array.from(new Set(arr));//數組去重

Array.from()不支持IE(supported),換個簡單的去重方法二:排序

arr.sort();
let _arr = [];
for(let i =0;i<arr.length;i++){
    if(arr[i] !== arr[i+1]){
        _arr.push(arr[i]);
    }
}

去重後開始獲取咱們的字符在字符串中的個數:ip

let new_arr = _arr.map(function(a,b){
    let count = str.match(new RegExp(a,'g')).length;//每一個字符在str裏面的個數
    return [a,count];//返回一個帶有字符和長度[s,len]的數組
});
new_arr.sort(function(a,b){
    return b[1] - a[1];//按照字符長度len從大到小排序
});
let [outcome] = [...new_arr.slice(0,1)];//第一個數組的len值最大
console.log(outcome)

最後console的答案是['a',4]字符串

相關文章
相關標籤/搜索