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

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

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

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

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

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

因为每行代码都标注了详细的注释,下面我就不再重复的解释代码了,

其实,大家从这道面试题就可看出,不管是js代码还是java代码,思想都是相通的,只要掌握了解题技巧,不管是那种语言,都会有一种游刃有余的感觉(当然,本人并没有达到这种境界~)

那晚征服的一道js经典的面试题的更多相关文章

  1. 一道js的前端面试题,主要弄清楚逗号表达式的作用

    群里看到的一道前端JS面试题.我以为我会,其实我错了.找了很多资料,写下来. var i,j,k; for( i = 0 , j = 0; i < 10 , j < 6; i++ , j+ ...

  2. 分享一道JS前端闭包面试题

    输出以下代码的结果 function fun(n,o){ console.log(o); return { fun:function(m){ return fun(m,n);//[1] } } } v ...

  3. 解析js中作用域、闭包——从一道经典的面试题开始

    如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎 ...

  4. Js经典相册

    Js经典相册 点击下载

  5. 一道js题

    <script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; ...

  6. 一道很经典的 BFS 题

    一道很经典的 BFS 题 想认真的写篇题解. 题目来自:https://www.luogu.org/problemnew/show/P1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运 ...

  7. 【前端】Vue.js经典开源项目汇总

    Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...

  8. Vue.js经典开源项目汇总

    Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...

  9. js经典试题之常用的方法

    js经典试题之常用的方法 1.下面代码输出的值 let s = "bob" const replaced = s.replace('b', 'l') replaced === &q ...

随机推荐

  1. 加快Bitmap的访问速度

    引言 在对Bitmap图片操作的时候,有时需要用到获取或设置像素颜色方法:GetPixel 和 SetPixel, 如果直接对这两个方法进行操作的话速度很慢,这里我们可以通过把数据提取出来操作,然后操 ...

  2. Java Split以竖线作为分隔符

    今天用到了Java中的Split函数,要以“|”作为分割符,当输入竖线时,发现出错,这个问题应该很久前就遇到过,不过太长时间就给忘了! 网上一搜,就找到了答案,这是因为split里面有两个参数,其中一 ...

  3. android 监听软键盘的收起与打开

    参考: http://toughcoder.net/blog/2015/10/09/android-trick-detect-soft-keyboard-show-slash-hide/ packag ...

  4. 如何改变Activity在当前任务堆栈中的顺序,Intent参数大全

    引用:http://blog.csdn.net/think_soft/article/details/7477072 本示例演示如何通过设置Intent对象的标记,来改变当前任务堆栈中既存的Activ ...

  5. 谈"自驱力"

    最新说明: 1.标题是为了博眼球取的,请不大家不要纠结具体薪资数字,我瞎取的 2.请注意素质,不要满口喷粪,不要搞人身攻击,尊重别人,就是尊重你自己 3.请大家就事论事,不要胡乱臆想,请站在全局的角度 ...

  6. jQuery easyui 之 expend row

    http://www.jeasyui.com/tutorial/datagrid/datagrid21.php

  7. 在Sharepoint2010中一种自定义调查列表的不允许再次答复提示的处理方法!

    在Sharepoint中默认创建的调查列表系统只允许答复一次,再次答复将报错误信息,这对最终用户而言是非常不友好的体验,当然你也可以在调查设置中的常规设置中设置允许多次答复,这样就会有错误提示信息,但 ...

  8. js map

    // js通用方法 // map对象定义 function Map() { var struct = function(key, value) { this.key = key; this.value ...

  9. windows 2008 R2 64位系统,找到Microsoft Excel 应用程序

    在windows  2003 操作系统中, 1.在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务", 2.依次双击& ...

  10. 【转】Linux下svn常用指令

    转自: http://blog.csdn.net/myarrow/article/details/8110858 1.将文件checkout到本地目录svn checkout path(path是服务 ...