推断字符串涌现次数最多的字符 及 次数

剖析

问题的意义大抵就是找出每一个字符涌现的次数,然后比较大小。那末每一个字符都应该对应它涌现的次数。既然是一一对应的,那我们就想到用对象的
key
value来贮存字符和其涌现的次数。

具体做法

  • 新建一个空对象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))
    原文作者:史潇倩
    原文地址: https://segmentfault.com/a/1190000018344774
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞