你的位置:首页 > 软件开发 > Java > 那晚征服的一道js经典的面试题

那晚征服的一道js经典的面试题

发布时间:2016-06-03 00:00:07
今天朋友共享了一道js中经典的面试题,需求是这样的给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出 刚拿到这道题的第一感觉便是定义一个count计时器,然后通过for循环 里面嵌套if判断,但是这样的话貌似并不是一个很好的解决方案 ...

今天朋友共享了一道js中经典的面试题,需求是这样的

给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出

 刚拿到这道题的第一感觉便是定义一个count计时器,然后通过for循环 里面嵌套if判断,但是这样的话貌似并不是一个很好的解决方案

因为你并不知道该字符串是数字还是字母和 特殊符号,又或者是这三者的组合形式,所以,这种方案就显得极其的麻烦和繁琐了

所以有一个算是比较好的解决方案,代码如下

 //判断一个随意字符串中出现次数最多的字母,并判断出出现过几次    var str = "saidhsd,pmgmtpmrpashdoasdnassdsjaoiosdnasndasnd";    var join = {};//定义一个对象    for (var i = 0; i < str.length; i++) {      //判断该字符串截取出来的这一个字符是不是在join对象中存在      if (!join[str.charAt(i)]) {        //如果不存在,则以该单字符作为join对象的键值,将其values赋值为1        join[str.charAt(i)] = 1;      } else {        //如果存在,则找到该键值对应的value值 将其自增        join[str.charAt(i)]++;      }    }    var max = 0;//定义一个最大值,用于保存出现次数最多的字符的次数    var maxStr = "";//用于保存出现次数最多的那个字符    //打擂算法循环输出join中保存的数据    for(var item in join){      //每一个item都代表着一个join对象的键值(也就是字符)      if(join[item]>max){        max = join[item];        maxStr = item;      }    }    alert(maxStr+"字符出现的次数为:"+max);

原标题:那晚征服的一道js经典的面试题

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。