输出字符串中重复次数最多的字符和次数
这是我昨天去实习面试时遇到的题目的改进版,当时的问题是输出最多的次数,后面回家复盘的时候想到还可以输出字符,网上看了下很多用的方法比较复杂,于是记录一个非常初级的方法,做一个思路的分享。
具体思路为:
将字符串先转为数组(只是简单的考虑到连续的字符串的情况),遍历数组依次拿出每一个字符。
再嵌套一个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;
}

浙公网安备 33010602011771号