- 本次练习写一个统计字符串中出现最多的字母以及出现的次数,主要通过两个方法来实现(正则和普通方法)
- 普通方法如下:
- 利用对象不重名的特征,把每个字母存入对象中,属性名是字母,属性值是字母出现的次数,在利用假设法求出字母和次数
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);复制代码