2005年Baidu笔试试题及参考答案

 1 //实现 void delete_char(char * str, char ch);
 2 //把str中所有的ch删掉 
 3 #include <iostream>
 4 #include <stdio.h>
 5 using namespace std;
 6 
 7 void delete_char(char* str,char ch)
 8 {
 9     int length=strlen(str);
10     int index=0;
11     char* sb=(char *)malloc(sizeof(char)*(length+1));
12     if(length>0)
13     {
14         memcpy(sb,str,length);
15         sb[length]='\0';
16     }
17     
18     for(int i=0;i<length;i++)
19     {
20         if(sb[i]!=ch)
21         {
22             str[index++]=sb[i];
23         }
24     }
25     str[index]='\0';
26     free(sb);
27 }
28 int main()
29 {
30     char s[]="adosfasodhgoafdhgoauhdfajsdofjqwefr";
31     delete_char(s,'a');
32     printf("%s\n",s);
33     system("pause");
34     return 1;
35 }

3.搜索引擎的日志要记录所有查询串,有一千万条查询,不重复的不超过三百万
 要统计最热门的10条查询串. 内存<1G. 字符串长 0-255
 (1) 主要解决思路 //具体用词和原题不大一样
 (2) 算法及其复杂度分析

题目考察两个方面内容,一个是大数据量集中的数据空间映射

第二个知识点就是提取10条最热门的查询串……

针对第一个问题,很容易让人联想到hash的功能,从一个大的样本数据范围映射到小的样本空间中。

至于如何设计hash(string-->int),这个在题目中不需要做过多的说明,毕竟百度需要的是思路,考察你对数据结构和算法的理解程度。

第二个问题,就是典型的大堆排序,提取最大的N条记录。

有字典,设计一个英文拼写纠正算法 (1) 思想 (2) 算法及复杂度 (3) 改进

作者:W.M.steve
出处:http://www.cnblogs.com/weisteve/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/weisteve/p/2200154.html