论坛首页 Web前端技术论坛

web前端笔试一道面试题目新解

浏览 14524 次
精华帖 (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>
   发表时间: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)


这样应该就可以了!
0 请登录后投票
   发表时间: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'));


我晕,看了一下,思路都一样的。。。
0 请登录后投票
   发表时间:2010-12-05  
面试前为啥不看看《编写高质量代码:Web前端开发修炼之道》和《大巧不工:Web前端设计修炼之道》呢?
0 请登录后投票
   发表时间:2010-12-06  
linux1689 写道
面试前为啥不看看《编写高质量代码:Web前端开发修炼之道》和《大巧不工:Web前端设计修炼之道》呢?

受楼上的指点,特意去浏览了下第一本,书是好书,但跟本贴关系不大。
0 请登录后投票
   发表时间:2010-12-06   最后修改:2010-12-06
桶式排序么?
0 请登录后投票
   发表时间: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>
0 请登录后投票
   发表时间:2010-12-07  
2L 和 3L 的把查询最大值放到一次循环中了。更好
少了一次循环
0 请登录后投票
   发表时间: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 '';
});
0 请登录后投票
   发表时间: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;
   }
}
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics