练习题的题目是,【给你一个字符串,寻找该字符串中出现次数最多的字母和出现次数。比如:"aadfdfdfxcvbvbeeeessscv"】
分享两个独特思路的JS代码
funOne:利用split方法,求出每个字母出现次数,比较次数求得最大值
function funOne(){
var string = "abaasdffggghhjjkkgfddsssss";
var countArr = new Array();
var i = 0;
while(string.charAt(0)){
// 结果是a=3,用split将字符串按照当前字母分段截取,可获得当前字母出现的次数
countArr[i] = string.charAt(0) + "=" + (string.split(string.charAt(0)).length - 1);
// 去掉字符串中的当前字母
string = string.split(string.charAt(0)).join("");
i++;
}
console.log('各个字母出现的次数是:' + countArr);
// 输出结果为:【<span role="presentation" class="objectBox objectBox-text ">a=3,b=1,s=6,d=3,f=3,g=4,h=2,j=2,k=2】</span>
for(var j = 0,temp=0; j < countArr.length; j++){
// 比较每一个字母出现的次数,一次循环求出最大值
if(temp <= Number(countArr[j].split("=")[1])){
temp = Number(countArr[j].split("=")[1]);
i = j;
}
}
console.log('出现次数最多的字母是:' + countArr[i]);
// 输出结果为:【<span role="presentation" class="objectBox objectBox-text ">s=6</span>】
};
代码执行后,输出结果为:
各个字母出现的次数是:a=3,b=1,s=6,d=3,f=3,g=4,h=2,j=2,k=2
出现次数最多的字母是:s=6
需要说明的是,JS中的split() 方法用于把一个字符串分割成字符串数组。
funTwo:
function funTwo(){
// var str ="abaasdffggghhjjkkgfddsssss";
var str = "abcaaa";
var arr = str.split("");
var obj = {};
var xiaomo = [];
for(var i=0,j; j=arr[i]; i++){
if(!obj[j]){
obj[j] = 0;
<span style="font-family:Arial, Helvetica, sans-serif;">// 字符串中第一次出现的字母进入if分支</span>
}
xiaomo[++obj[j]] = j;
}
console.log('最多的字符串为:'+xiaomo[xiaomo.length-1]+",出现了"+(xiaomo.length-1)+'次');
};
代码执行后,输出结果为:【最多的字符串为:s ,出现了6次】