前几天在学习js的时候,碰到了这样一道面试题,要求计算出给你一个随机乱敲的一个字符串,要求在其中找出那个字符出现的次数最多,以及出现的个数。
这你有两种方案,请大家仔细阅读,有可能在你将来的面试中会碰到。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> //给定一个字符串,需要在其中找出哪个字符出现的次数最多,并且计算出这个字符出现的总次数 //01自定义一个字符串 var str = "fjalsfj1fds;lafsafafafasfas"; /* 02.JSON定义法类似于直接定义法,JSON定义法就是将直接定义法定义的函数与属性放到大括号中, 并且去掉属性与函数签名的对象名,把等于号改为了冒号,每行后面改为逗号! */ var json = {}; //03遍历str字符串 for (var i = 0; i < str.length; i++) { /*04.str.charAt(i):在字符串中取出对应的i处的索引的字符串。 判断当前元素是否已经在数组中存在 */ if (!json[str.charAt(i)]) { json[str.charAt(i)] = 1;//05给对应数组元素中个数赋值 } else { json[str.charAt(i)]++; } } var iMax = 0;//出现次数 var iIndex = "";//元素名称 for (var i in json) {//重新赋值出现最多的元素 if(json[i]>iMax){ iMax = json[i]; iIndex = i; } } alert("出现次数最多的是:"+iIndex+"出现"+iMax+"次"); </script> </head> <body> </body> </html>
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> var str = "adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串 var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0 var result = ''; //命名一个变量放置结果输入 while (str != '') { //循环迭代开始,并判断字符串是否为空 oldStr = str; //将原始的字符串变量赋值给新变量 getStr = str.substr(0, 1); //用字符串的substr的方法得到第一个字符(首字母) eval("str = str.replace(/" + getStr + "/g,'')"); if (oldStr.length - str.length > maxLength) { //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度 maxLength = oldStr.length - str.length; //两字符串长度相减得到最大的字符串长度 result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数) } } alert(result) //弹出结果 </script> </head> <body> </body> </html>
希望看完后对大家有帮助,还希望读者如果有更多,更经典的面试题,请发送到我的邮箱18813091329@163.com