输出字符串中重复次数最多的字符和次数

这是我昨天去实习面试时遇到的题目的改进版,当时的问题是输出最多的次数,后面回家复盘的时候想到还可以输出字符,网上看了下很多用的方法比较复杂,于是记录一个非常初级的方法,做一个思路的分享。

具体思路为:
将字符串先转为数组(只是简单的考虑到连续的字符串的情况),遍历数组依次拿出每一个字符。

再嵌套一个for循环,再次遍历数组,将每个字符和整个数组的字符进行比较

如果有相同的,计数器+1。在一次遍历结束以后,我们就获得了该字符的重复次数,将这个次数和最大值进行比较,如果大于最大值,则让最大值等于这个次数,同时让最大字符变为这个字符。

代码如下:

function maxStrCount(str){
      let max = 0 ; // max记录最大重复次数
      let maxarr = ''; // maxarr记录重复最多的字符
      let arr = []; // str转数组后存放在这里
      arr = str.split(''); // str转数组
      for(let i=0,l=arr.length; i<l; i++){ // 第一次循环拿出第一个字符,然后在内层循环和每一个字符进行比较,因为至少会和自己比较一次,所以我们设置计数为0,到时候+1正好是1
            let count = 0; // 记录重复次数
            for(let j=0,l=arr.length; j<l; j++){ // 第二层循环会把每个字符和一层的字符进行比较
                  if(arr[i] === arr[j]){ // 如果有相等的,就让计数器+1
                        count++;
                  }
            }
            if(count>max){ // 在内层循环结束以后,就能得出该字符的重复次数,如果次数比保存的max值大,就替换掉,同时记录当前的字符
                  max = count;
                  maxarr = arr[i];
            }
      }
      return maxarr, max;
}
posted @ 2020-11-18 16:05  wangxinyi  阅读(754)  评论(0)    收藏  举报