js演算法:找出一個字串中出現次數最多的字元!
在其他部落格裡面看到了一種方法:
這個方法很簡單,但是15-20行程式碼對於萌新來說,不是很好理解,因此我給出了以下這個方案,先想辦法統計出所有字母各出現的次數,然後把這些次數push到一個數組裡面,找出最大的那個數(我這裡是通過排序找出的最大數),最大數有了,該數對應的字元不就很容易找到嗎?下面就是具體程式碼:
var str = 'abcdeffsasssddw';
function findMax(str){
var arr = str.split('');
var obj = {};
for (var i = 0;i < arr.length - 1; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1;
} else {
obj[arr[i]] += 1;
}
}
var numList = [];
var zimu = '';
for(var item in obj){
numList.push(obj[item]);
}
var newList = bubbleSort(numList);
// 計算出最大數字
console.log(newList[newList.length-1]);
for(var k in obj){
if(newList[newList.length-1] === obj[k]){
zimu = k;
}
}
alert(zimu);
}
// 排序
function bubbleSort(arr) {
for (let i = 0, l = arr.length; i < l - 1; i++) {
for (let j = i + 1; j < l; j++) {
if (arr[i] > arr[j]) {
let tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
return arr;
}
findMax(str);
程式碼有點多,但是好理解!