求一個字符串中出現次數最多的字符和次數

1、思路:

  • 新建一個空對象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轉換成字符串。
  • 最後就可以返回出現次數最多的字符及次數了。

2、存在多個:

  let str = 'http://www.sxqyuminggg.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 k in obj) {
        if (num < obj[k]) {
          num = obj[k]
        }
      }
      for (var j in obj) {
        if (obj[j] === num) {
          keys.push(j)
        }
      }
      return '出現次數最多的字符爲' + keys.join('和') + ',出現次數爲' + num + '次。'
    }
    console.log(word(str))
  },
   let str = 'asdfgaaasdffff'
    let obj = {}
    for (let i = 0; i < str.length; i++) {
      if (!obj[str.charAt(i)]) {
        obj[str.charAt(i)] = 1
      } else {
        obj[str.charAt(i)]++
      }
    }
    // console.log(Object.keys(obj)) // ['a', 's', 'd', 'f', 'g']
    let max = 0
    let name = ''
    for (let i in obj) {
      if (obj[i] > max) {
        max = obj[i]
        name = i
      }
    }
    console.log(name, max) // f 5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章