查询字符串中出现频率最高的几种方法
1 概述
要想在字符串中搜索出出现频率最高的字符串以及频率,需要涉及到JS中字符串以及数组的操作.
大致的思路有三种:
1:替换首字符,比较字符串前后长度之差,在进行比较。
2: 将字符串重新排列成有序字符串,在通过正则获取各个不同部分组成的数组。
3: 将字符串进行遍历统计。
2 实例
假如 var str = 'asdasassdsaa';
方法一
function getMost1(str){ var most = [], num = 0; while( str != '' ){ var ori = str, target = str.substr(0,1); var re = target; if(/[\$\(\)\*\+\.\?]/.test(target)) re = '\\' + re; str = str.replace(new RegExp(re, 'g'), ''); var diff = ori.length - str.length; // if(diff > num) { num = diff; most = [target]; } else if (diff == num) { most.push(target); } } return num + ' ' + most; }
方法二
function getMost2(str){ var most = str.split('').sort().join('').match(/(.)\1*/g); most = most.sort(function(a,b){return a.length-b.length}).pop(); return most.length + ' ' + most[0]; }
方法三
function getMost3(str){ for(var i in str){ var mem = str[i]; o[mem]?o[mem]++:o[mem] = 1; } var newArr = []; var base = 0; var letter = []; for(var i in o){ var mem = o[i]; if(mem>base){ letter = []; base = mem; letter.push(i); }else if(mem == base){ letter.push(i); } } return base + ' ' +letter; }
其中方法二虽然简洁,但是只能得到出现频率最高之一。
有兴趣的话,可以拆分下,单步调试。