利用split方法計算字符串中出現字母最多的次數

最近練習一些簡單的算法題,知道本身很不聰明,但卻沒想到用了這麼久,划算不划算是個須要考慮的問題,算法

其中有個算法是:統計一個字符串出現最多的字母,網上不少本身的看法,可是才疏學淺,有些地方看的有點困難,放在這個地方供參考吧!數組

 

<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>
相關文章
相關標籤/搜索