1. 程式人生 > >js演算法:找出一個字串中出現次數最多的字元!

js演算法:找出一個字串中出現次數最多的字元!

在其他部落格裡面看到了一種方法:


這個方法很簡單,但是15-20行程式碼對於萌新來說,不是很好理解,因此我給出了以下這個方案,先想辦法統計出所有字母各出現的次數,然後把這些次數push到一個數組裡面,找出最大的那個數(我這裡是通過排序找出的最大數),最大數有了,該數對應的字元不就很容易找到嗎?下面就是具體程式碼:


  1. var str = 'abcdeffsasssddw';

  2.         function findMax(str){

  3.             var arr = str.split('');

  4.             var obj = {};

  5.             for (var i = 0;i < arr.length - 1; i++) {

  6.                 

  7.                 if (!obj[arr[i]]) {

  8.                     obj[arr[i]] = 1;

  9.                 } else {

  10.                     obj[arr[i]] += 1;

  11.                 }

  12.             }

  13.             var numList = [];

  14.             var zimu = '';

  15.             for(var item in obj){

  16.                 numList.push(obj[item]);

  17.             }

  18.             var newList = bubbleSort(numList);

  19.             // 計算出最大數字

  20.             console.log(newList[newList.length-1]); 

  21.             for(var k in obj){

  22.                 if(newList[newList.length-1] === obj[k]){

  23.                     zimu = k;

  24.                 }

  25.             }

  26.             alert(zimu);

  27.         }

  28.         // 排序

  29.         function bubbleSort(arr) {

  30.             for (let i = 0, l = arr.length; i < l - 1; i++) {

  31.                 for (let j = i + 1; j < l; j++) {

  32.                     if (arr[i] > arr[j]) {

  33.                         let tem = arr[i];

  34.                         arr[i] = arr[j];

  35.                         arr[j] = tem;

  36.                     }

  37.                 }

  38.             }

  39.             return arr;

  40.         }

  41.         findMax(str);


程式碼有點多,但是好理解!