判斷字符串出現次數最多的字符 及 次數

分析

題目的意思大體就是找出每一個字符出現的次數,而後比較大小。那麼每一個字符都應該對應它出現的次數。既然是一一對應的,那咱們就想到用對象的 keyvalue來儲存字符和其出現的次數。

具體作法

  • 新建一個空對象obj
  • 遍歷給定的字符串
  • 接下來就是最重要的 把字符做爲key值,對應次數做爲value添加給obj
  • 判斷obj是否存在當前循環的字符,有則讓value即次數++,不然把當前項做爲key添加給obj
  • 而後是比較次數的大小。
  • 這時咱們須要一個變量來儲存objvalue值。
  • 聲明一個變量num,並設置初始值爲0
  • 遍歷obj,比較其value值與num值的大小。大則將其value值賦給num,不然num值不變,從而找出最大的value值。
  • 這時咱們須要一個數組來儲存與最大的value值即num匹配的key值。由於這樣的key值可能不止一個,因此用一個數組來儲存。
  • 新建一個空數組keys
  • 遍歷obj,判斷與num匹配的key值,並添加在keys內。
  • 由於keys是個數組,須要用join轉換成字符串。
  • 最後就能夠返回出現次數最多的字符及次數了。
let str = "http://www.sxqyuming.com";
function word(str){
    let obj = {};
    let num = 0;
    let keys = [];
    for(var i=0;i<str.length;i++){
        let strs = str[i]
        if(!obj[strs]){
            obj[strs] = 1;
        }else{
            obj[strs]++
        }
    }
    for(var i in obj){
        if(num<obj[i]){
            num = obj[i]
        }
    }
    for(var i in obj){
        if(obj[i]==num){
            keys.push(i)
        }
    }
    return "出現次數最多的字符爲"+keys.join('和')+",出現次數爲"+num+"次。"
}
console.log(word(str))
相關文章
相關標籤/搜索