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


代码有点多,但是好理解! 

猜你喜欢

转载自blog.csdn.net/qq_36072384/article/details/81200742
今日推荐