最近练习一些简单的算法题,知道本身很不聪明,但却没想到用了这么久,划算不划算是个须要考虑的问题,算法
其中有个算法是:统计一个字符串出现最多的字母,网上不少本身的看法,可是才疏学浅,有些地方看的有点困难,放在这个地方供参考吧!数组
<script> var str = "zhaochucichuzuiduodezifu"; var arr = [];//定义一个新数组 //循环遍历字符串 for (var i = 0, length = str.length; i < length; i++) { var index = -1; var j = 0; //找每个字符 do { index = str.indexOf(str[i], index + 1);????? if (index != -1) { j++; } }while (index != -1); arr[j] = str[i]; //把字符串str中的字符赋给数组arr索引为j的数据,当屡次循环后,会出现重复赋值的现象, //后赋值的会把以前的赋值覆盖掉,但不影响咱们找出字符出现最多的那个 } console.log(arr); console.log("最多的字符是" + arr[arr.length - 1]); console.log("次数是" + (arr.length - 1)); </script>
可是不能放弃,本身冷静下来想了想,JS查找字符串中出现次数最多的字符,能够利用所熟悉的下手,ui
split(''),用字符串里面的已知字符切割本身的字符串,而后求得切割完的长度-1=对应字符的出现次数,spa
可是发现,开始遍历字符串的每个字符,求得的值会重复。因而有考虑过,先去除重复,code
利用保留下来的字符遍历,后进行操做,也能够求得值;blog
关键:indexOf push split 的使用索引
<!--求字符串中出现次数最多的字符次数--> <script> var arr = []; function txt(str) { var j = 0; for(var i = 0; i < str.length; i++) { if(arr.indexOf(str[i]) == -1) { arr.push(str[i]); } } for(var j = 0; j < arr.length; j++) { var s = arr[j]; var dd = str.split(s).length - 1; console.log("字母" + s + "出现了" + dd + "次"); } } var str = "abacdeesa"; txt(str); </script>