一道php程序员面试题目

以下是一道腾讯php程序员面试题目,在网上看到的,具体可以查看 http://www.xhttp.cn/2010/05/2

 

【编程任务】:

 

1、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧。

 

要求如下:   

1)/myworks /example/bbe.txt,98版本英文圣经一本   

2)输入部分要求如下:php ./example.php [单词]   

3)输出部分如下:[单词] 1,2 2,4 5,6 表示:此单词在1行2列(第二个单词),2行4列...  

 

说明:   

1)此文本 4MB之巨...   

2)单词的含义:由英文字母(大小写),数字(0-9)组成的串   

3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的   

4)上机考试不允许上网,但我装了man文档以及读取CHM以及PDF的阅读器,在电脑的桌面的CHM文件夹中,有相应的PHP参考手册   5)算法复杂度要求不能大于O(N^2)(就是N的平方)   

6)什么?PHP低效且用起来不顺手,好的,你可以用别的语言来实现。但注意:提供给你的机器上只有python 2.4/perl 5.8/gcc[g++] 4.1

 

【分析思路】:

1,首先分析 bbe.txt 文件,生成索引。

索引文件以 单词为key, 值就是 位置字符串(1,2 3,4 5,6 )。

 

2,将索引压缩后,分片保存在不同文件中。

 

3, 查询时,依次读取不同索引文件到内存中,进行检索。

4, 其实,2、3部分可以使用哈希函数,分别映射到不同的索引文件。检索的时候,根据检索词哈希后的值可以直接确定需要调入那个索引文件。这样精确定位之后,不但省时间,而且省内存,呵呵。

 

5, 查询的时候,读取索引文件到内存中,直接使用数组下标即可找到答案。

 

(以上为思路分析,代码欠奉。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值