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) 改进

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值