- 本次练习写一个统计字符串中出现最多的字母以及出现的次数,主要通过两个方法来实现(正则和普通方法)
- 普通方法如下:
- 利用对象不重名的特征,把每个字母存入对象中,属性名是字母,属性值是字母出现的次数,在利用假设法求出字母和次数
var str1 = "asffsadgasgerhrthwh";
var obj1 = {};
for(var i = 0; i < str1.length; i++){//将字母存入对象中
var cur = str1[i];
if(obj1[cur]){
obj1[cur]++;
}else {
obj1[cur] = 1;
}
}
//利用假设法求出出现最多的字母及次数
var max1 = 1; //假设出现最多的次数
var maxStr1 = null;//假设出现最多次数的字母
for(var key in obj1){
if(obj1[key] > max1){
max1 = obj1[key];
maxStr1 = key;
}else if(obj1[key] == max1){
maxStr1 += ','+key;
}
}
console.log(max1, maxStr1);
var str2 = "asasdgargwehhwhhw";
var ary2 = str2.split('');
var ary2 = [].slice.call(str2); //转换数组
ary2.sort(function (a,b) { //转换数组方法2
return a.localeCompare(b);
});
str2 = ary2.join('');
//匹配字符串中连续出现的相同字母
var reg2 = /(\w)\1*/g;
//利用假设法
var maxstr2 = null;
var max2 = 1;
str2.replace(reg2,function ($0,$1) {
if($0.length > max2){
max2 = $0.length;
maxstr2 = $1;
}else if($0.length === max2){
maxstr2 += ','+$1;
}
});
console.log(max2, maxstr2);