欢迎来到天天文库
浏览记录
ID:25303708
大小:83.50 KB
页数:23页
时间:2018-11-19
《《百度试题及面试》word版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1编程: 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。2编程: 用C语言实现函数void*memmove(void*dest,constvoid*src,size_tn)。memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。3英文拼写纠错: 在用户输入英文单词时,经常发生错误,我们需要对其进行纠错。假设已经有一个包含了正确英文单词的词典,请你设计一个拼写纠错的程序。(1)请描述你解决这个问题的思路;(2)请给出主要的处理流程,算法,以及算
2、法的复杂度;(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。4寻找热门查询: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录,这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。请你统计最热门的10个查询串,要求使用的内存不能超过1G。(1)请描述你解决这个问题的思路;(2)请给出主要的处理流程,算法,以及算法的复杂度。5集合
3、合并: 给定一个字符串的集合,格式如:{aaabbbccc},{bbbddd},{eeefff},{ggg},{dddhhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaabbbcccdddhhh},{eeefff},{ggg}(1)请描述你解决这个问题的思路;(2)请给出主要的处理流程,算法,以及算法的复杂度(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。////////////////////////////////1题char*rever
4、t(char*str){intn=strlen(str);inti=0;charc;for(i=0;i{c=str;str=str[n-i];str[n-i]=c;}returnstr;}///////////////////////////////////2题void*memmove(void*dest,constvoid*src,size_tn){assert((dest!=0)&&(src!=0));char*temp=(char*)dest;char*ss=(char*)src;inti=0;for(
5、;i{ *temp=*ss ;}returntemp;}/////////////////////////////////////////////////3题(1)思路:字典以字母键树组织,在用户输入同时匹配(2)流程:每输入一个字母:沿字典树向下一层,a)若可以顺利下行,则继续至结束,给出结果;b)若该处不能匹配,纠错处理,给出拼写建议,继续至a);算法:1.在字典中查找单词字典采用27叉树组织,每个节点对应一个字母,查找就是一个字母一个字母匹配.算法时间就是单词的长度k.2.纠错算法情况:当输入的最后一
6、个字母不能匹配时就提示出错,简化出错处理,动态提示可能处理方法:(a)当前字母前缺少了一个字母:搜索树上两层到当前的匹配作为建议;(b)当前字母拼写错误:当前字母的键盘相邻作为提示;(只是简单的描述,可以有更多的)根据分析字典特征和用户单词已输入部分选择(a),(b)处理复杂性分析:影响算法的效率主要是字典的实现与纠错处理(a)字典的实现已有成熟的算法,改进不大,也不会成为瓶颈;(b)纠错策略要简单有效,如前述情况,是线性复杂度;(3)改进策略选择最是重要,可以采用统计学习的方法改进。////////////
7、//////////////////////////////////4题(1)思路:用哈希做(2)首先逐次读入查询串,算哈希值,保存在内存数组中,同时统计频度(注意值与日志项对应关系)my.chinahrlab.com选出前十的频度,取出对应的日志串,简单不过了。哈希的设计是关键。//////////////////////////////////////////////////5题(1)思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交集。有就合并,如果小集合与所有其他集合都没有交集,则独立。
8、独立的集合在下一轮的比较中不用考虑。这样就可以尽量减少字符串的比较次数。当所有集合都独立的时候,就终止。(2)处理流程:1.将集合按照大小排序,组成集合合并待处理列表2.选择最小的集合,找出与之有交集的集合,如果有,合并之;如果无,则与其它集合是独立集合,从待处理列表中删除。3.重复直到待处理列表为空算法:1。将集合按照大小从小到大排序,组成待处理的集合列表。2。取出待处理集合列表中最小的集合,对于
此文档下载收益归作者所有