那晚征服的一道js经典的面试题
今天朋友共享了一道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经典的面试题的更多相关文章
- 一道js的前端面试题,主要弄清楚逗号表达式的作用
群里看到的一道前端JS面试题.我以为我会,其实我错了.找了很多资料,写下来. var i,j,k; for( i = 0 , j = 0; i < 10 , j < 6; i++ , j+ ...
- 分享一道JS前端闭包面试题
输出以下代码的结果 function fun(n,o){ console.log(o); return { fun:function(m){ return fun(m,n);//[1] } } } v ...
- 解析js中作用域、闭包——从一道经典的面试题开始
如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎 ...
- Js经典相册
Js经典相册 点击下载
- 一道js题
<script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; ...
- 一道很经典的 BFS 题
一道很经典的 BFS 题 想认真的写篇题解. 题目来自:https://www.luogu.org/problemnew/show/P1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运 ...
- 【前端】Vue.js经典开源项目汇总
Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...
- Vue.js经典开源项目汇总
Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...
- js经典试题之常用的方法
js经典试题之常用的方法 1.下面代码输出的值 let s = "bob" const replaced = s.replace('b', 'l') replaced === &q ...
随机推荐
- 【推荐】最新国外免费空间网站Hostinger
英国最大的免费网站托管服务提供商! http://api.hostinger.co.uk/redir/6703404 Hostinger免费版包括以下内容: - 2000 MB的磁盘空间 - 100 ...
- SQL Server 2008|2012 阻止保存要求重新创建表的更改
不是很理解为什么在SQL Server 2008及以后的版本中会加入阻止保存要求重新创建表的更改这个选项.太麻烦了,每次修改表结构的时候会被"阻止".很不方便. 问题描述: SQL ...
- Mac下MySQL卸载方法 转载
mac下mysql的DMG格式安装内有安装文件,却没有卸载文件……很郁闷的事. 网上搜了一下,发现给的方法原来得手动去删. 很多文章记述要删的文件不完整,后来在stackoverflow这里发现了一个 ...
- 物料分类账 [COML] PART 2 - 总体流程
核心流程概要: [1]. 分类账在物料主数据的影响 首先描述下SAP中物料价格的 物料主数据相关的几个点: q价格控制(Price Control): 决定物料计价方式. S 标准价格(Standar ...
- Nhibernate基础
Nhibernate(英文冬眠的意思) 常用方法 Contains Evict Clear 在 NHibernate 中一切必须是 Virtual 的吗? http://www.cnblogs.co ...
- The file 'MemoryStream' is corrupted! 的解决办法
The file 'MemoryStream' is corrupted! Remove it and launch unity again! [Position > ] 有时候我们会遇到这个报 ...
- MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结
From: http://database.51cto.com/art/201203/323863.htm 网络上很多人咨询mysql是否提供布尔类型?MySQL数据库确实提供布尔类型,此数据类型的关 ...
- C++ Low level performance optimize 2
C++ Low level performance optimize 2 上一篇 文章讨论了一些底层代码的优化技巧,本文继续讨论一些相关的内容. 首先,上一篇文章讨论cache missing的重要性 ...
- CGContext 的一些工具方法
/* *设置虚线 *param context CGContext *param context CGContext *param lineDashLengths 如: const CGFloat l ...
- Guardian of Decency(二分图)
Guardian of Decency Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submi ...