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 }
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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/weisteve/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。