最近練習一些簡單的算法題,知道本身很不聰明,但卻沒想到用了這麼久,划算不划算是個須要考慮的問題,算法
其中有個算法是:統計一個字符串出現最多的字母,網上不少本身的看法,可是才疏學淺,有些地方看的有點困難,放在這個地方供參考吧!數組
<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>