免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2532 | 回复: 16
打印 上一主题 下一主题

面试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-19 00:14 |只看该作者 |倒序浏览
  前天面试遇了个题,现在还没个好方法,请高手指点。
  给定一个文件,计算并输出文件中不同单词的个数,以及单词出现的行号码。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-11-19 00:17 |只看该作者
你是咋想的呢?
先说出来听听。

论坛徽章:
0
3 [报告]
发表于 2005-11-19 00:26 |只看该作者
是一行一个单词吧?
不然, 你换行怎么算啊
比如:
      moon
cake
你算mooncake, 还是moon cake

[ 本帖最后由 yarco2 于 2005-11-19 00:29 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2005-11-19 00:30 |只看该作者
原帖由 weiwolves 于 2005-11-19 00:14 发表
  前天面试遇了个题,现在还没个好方法,请高手指点。
  给定一个文件,计算并输出文件中不同单词的个数,以及单词出现的行号码。

统计单词建议用二叉排序树结构
单词结点除左右指针域外再加个总个数域
不过统计行号有点麻烦……

论坛徽章:
0
5 [报告]
发表于 2005-11-19 09:27 |只看该作者
题目要求感觉不太清楚,一行行的读文件,分隔出所有单词并记录行号到结构体中,再进行比较输出

论坛徽章:
0
6 [报告]
发表于 2005-11-19 10:37 |只看该作者
我的思路是读空格和tab,同一行的只要单词后面含有空格和tab就把计数+1,直到独到\r.
比如:
hello come here

[ 本帖最后由 大司南 于 2005-11-19 10:39 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2005-11-19 20:28 |只看该作者
要简单也简单,要复杂也复杂。
行号不至一个,你怎么定义结构体呢?所以不需要定义结构体,只需要记录已经出现的单词。每出现一个新单词就遍历整个文件,然后统计个数,计算行号.不过效率可能不高。
判断单词就主要靠空格还有些特殊的结束符,最长的单词大概也就30个字符左右吧。

论坛徽章:
0
8 [报告]
发表于 2005-11-19 20:39 |只看该作者
可不可以
1.先遍历文件一次,每个单词作为一个token并记录行号,这样一个10000个单词的文件就有10000个包含行号的token记录。
2.然后将这些token按字典顺序排序。
3.最后并合,每个并合后的记录有一个行号数组。

不知道一般面试多长时间,觉得没几个小时写不出来...

论坛徽章:
0
9 [报告]
发表于 2005-11-19 21:23 |只看该作者
是不是要考虑文件大小,你避免应将单词全部读入内存,而耗尽内存。
说不定这个也是考察的一个方面呢!

论坛徽章:
0
10 [报告]
发表于 2005-11-20 11:01 |只看该作者
编译原理
lex做很快就搞定
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP