锁定老帖子 主题:web前端笔试一道面试题目新解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (12) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-02
最后修改:2010-12-02
据说是百度的,个人认为百度公司的题目没有这么简单 这不知道是哪位网友给出的回答,答案是对的,但显然不要这么复杂!! <script type=”text/javascript”> //<![CDATA[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> 我的解答: <script> var str = "adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串 var result = {}; for ( var i = 0; i < str.length; i++) { var c = str.charAt(i); if (result[c]) { result[c]++; } else { result[c] = 1; } } console.log(result); var max=0; var maxChar=''; for ( var key in result) { if(result[key]>max){ max=result[key]; maxChar=key; } } console.log(maxChar); console.log(max); </script> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-02
var str = "adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串 var result = {}; var max = 0; var maxChar = ''; for ( var i = 0; i < str.length; i++) { var c = str.charAt(i); if (result[c]) { result[c]++; if(result[c] > max){ max = result[c]; maxChar = c; } } else { result[c] = 1; } } alert(max + ':' +maxChar) 这样应该就可以了! |
|
返回顶楼 | |
发表时间:2010-12-04
最后修改:2010-12-04
var maxchar = function(s){ var h = {},t = [0,'']; for(var i = 0 , l = s.length; i < l ; i++){ if(h[s[i]]){ h[s[i]] += 1; if(h[s[i]] > t[0]){ t[0] = h[s[i]]; t[1] = s[i]; } }else{ h[s[i]] = 1; } } return t; } console.log(maxchar('adadfdfsedfsdfffserfefsefseeffffftsdg')); 我晕,看了一下,思路都一样的。。。 |
|
返回顶楼 | |
发表时间:2010-12-05
面试前为啥不看看《编写高质量代码:Web前端开发修炼之道》和《大巧不工:Web前端设计修炼之道》呢?
|
|
返回顶楼 | |
发表时间:2010-12-06
linux1689 写道 面试前为啥不看看《编写高质量代码:Web前端开发修炼之道》和《大巧不工:Web前端设计修炼之道》呢?
受楼上的指点,特意去浏览了下第一本,书是好书,但跟本贴关系不大。 |
|
返回顶楼 | |
发表时间:2010-12-06
最后修改:2010-12-06
桶式排序么?
|
|
返回顶楼 | |
发表时间:2010-12-07
最后修改:2010-12-07
看到帖子,自己写了个。居然和LZ的如此雷同
<script type="text/javascript"> //<![CDATA[ var s = 'adadfdfseffserfefsefseeffffftsdg' ; var a = s.split('') ; var a_new = [] ; for (var i = 0, le = a.length ; i < le; i++ ) { if (a_new[a[i]]){ a_new[a[i]]++; }else { a_new[a[i]] = 1 ; } } var max = 0 ; var maxS = '' ; for (var i in a_new) { if (a_new[i] > max){ max = a_new[i] ; maxS = i ; } } //]]> </script> |
|
返回顶楼 | |
发表时间:2010-12-07
2L 和 3L 的把查询最大值放到一次循环中了。更好
少了一次循环 |
|
返回顶楼 | |
发表时间:2010-12-07
var a = [];
var str = "adadseffouyangpingfsffffftsdg"; str.replace(/./g, function(c){ var count = a[c] ? a[c] : 1; a[c] = count + 1; return ''; }); |
|
返回顶楼 | |
发表时间:2010-12-07
厄 不好意思 用数组的画 下标不好获取了
还是用对象波 var a = {}; var maxValue = 0; var str = "adadseffouyangpingfsffffftsdg"; str.replace(/./g, function(c){ var count = a[c] ? a[c] : 1; a[c] = count + 1; maxValue = maxValue < a[c]? a[c] : maxValue; return ''; }); for(var p in a){ if(a[p] == maxValue){ alert(p + '\t' + maxValue); break; } } |
|
返回顶楼 | |