【阿里巴巴】笔试题Alibaba.com给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点
【阿里巴巴】笔试题
Alibaba.com
给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法
String extractSummary(String description,String[] key words)
目标是找出此产品描述中包含N个关键字(每个关键词至少出现一次)的长度最短的子串,作为产品简介输出。(不限编程语言)20分。
[解决办法]
这题很好啊
[解决办法]
把keyword转化为string类型
string M = 英文描述
i = 0, j = 0;
循环部分
j = i;
i = M.find(" ", i) // 查找空白分隔符
string TempStr = M.substr(j, i); // 求子串
TempStr.find(keyword) // 子串当中是否有关键字
有的话,记录长度,比较是否因该替换掉上次的长度
循环结束后,打印结果
[解决办法]
有难度……路过
[解决办法]
不是 easy job
20分太少。不给解
[解决办法]
阿里巴巴怎么网申不了
[解决办法]
编程之美自己看吧,一个O(n)扫描就结束了,预处理需要提前找出所有的关键字在文中的出现位置,这样在O(n)扫描的时候就可以秒杀了。
扫描过程始终保持一个[left,right]的range,初始化确保[left,right]的range里包含所有关键字则停止。
然后每次迭代:
1,试图右移动left,停止条件为再移动将导致无法包含所有关键字。
2,比较当前range's length和best length,更新最优值。
3,右移right,停止条件为使任意一个关键字的计数+1。
4,重复迭代。
[解决办法]
