判斷一個字符串中出現次數最多的字符並統計其出現的次數(面試題)


下面講一道面試前端開發做筆試常見的算法題:

判斷一個字符串中出現次數最多的字符,統計這個字符出現的次數:如字符串"abcdefgaddda",d出現次數最多,次數為4.

剛開始的做題思路如下:

            var str = 'abcdefgaddda'; var arr = str.split('');   //將字符串轉為數組
            var newArr = [];      //聲明一個數組保存去重后的字符
            var numArr = [];      //聲明一個數組保存字符對應的個數
            arr.forEach(function(element,index,array){ var index1 = newArr.indexOf(element); //獲取當前元素在去重數組中的索引,如果存在則大於等於0,不存在則為-1 if(index1==-1){ newArr.push(element); //判斷去重數組里沒有當前元素,所以往數組里面追加 numArr.push(1); //同步更新個數組對應的字符個數,剛追加進去都為1 }else{ numArr[index1]++;  //如果當前元素已存在,則更新個數數組對應的字符個數自增1 } }) console.log(arr,newArr,numArr); //["a", "b", "c", "d", "e", "f", "g", "a", "d", "d", "d", "a"] 原字符數組
            //["a", "b", "c", "d", "e", "f", "g"] 去重后的字符的數組
            //[3, 1, 1, 4, 1, 1, 1] 去重后的字符數組對應的個數數組
            
            //得到去重后的字符數組及對應的字符個數后,找個數最大的數及對應的字符
            function sortNumber(a,b){ return b-a;   //規定排序規則
 } var numArr1 = [].concat(numArr); //創建一個新數組並連接原數組,這樣改變原數組才不會影響復制后的數組
            numArr1.sort(sortNumber);  //將每個字符的個數從大到小排序
            var maxNum = numArr1[0];   //獲取最大個數
            var index = numArr.indexOf(maxNum);   //最大個數對應原數組的位置
            var maxStr = newArr[index];           //根據最大個數的位置找到出現次數最多的字符
            console.log('字符串"'+str+'",'+maxStr+'出現次數最多,次數為'+maxNum); 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM