人民搜索2

简介: 1、求包含所有query的最短距离   一篇文章,切完词之后放到一个vector中,一个查询切完词也放到一个vector中,写一个函数找出这篇文章中包含这个查询中所有词的最小区间的i和j。只要返回第一个即可。

1、求包含所有query的最短距离  
一篇文章,切完词之后放到一个vector<string>中,一个查询切完词也放到一个vector<string>中,写一个函数找出这篇文章中包含这个查询中所有词的最小区间的i和j。只要返回第一个即可。


当时很坑爹,直觉告诉我要建索引,而且建索引也对了,但是建完之后就不知道怎么搞了,后台他提示一句,有些是不需要比较的,才得到灵感,想出了解决办法,但是写起代码来,又掉链子了,可能是在纸上写代码没有什么经验吧,在电脑上,我写代码还是很快了。


言归正传,建索引的思路是对的。怎么建索引呢?


对于每个query中出现的词,建立索引,当然在实际应用中,可能是对文档中出现的所有词进行建索引。所谓建索引,就是记录query中每个词在doc中出现的位置。


比如一篇文档为“a b a a c d e f a f”,query为“a e f”,那么我们建立索引为:


a: 0 2 3 8
e: 6
f:7 9


那么下边如何搞呢?


首先看索引的第一排,0 6 7,找出最大和最小为7和0,距离为7,那么0 6 9还有没有必要比较呢?答案是否定的,那当然也就有思路了,比较了0 6 7之后,0就可以删除了,下面比较2 6 7,最小为2,最大为7,距离为5,更新最小距离,继续这个过程,直到有一个索引为空为止,最终可以得到最小距离的索引。

转自:http://www.cnblogs.com/cswolf/archive/2011/11/21/2267118.html

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

相关文章
|
存储 安全 Ubuntu
CentOS 与 Debian:主要相似点和不同点
【8月更文挑战第27天】
1075 2
CentOS 与 Debian:主要相似点和不同点
|
存储 供应链 数据库
探索代码之美——从问题到解决方案的旅程
【10月更文挑战第15天】在编程的世界里,每一行代码都是构建数字宇宙的基石。本文将通过一个简单的例子,展示如何从遇到问题到找到并实现解决方案的过程。我们将一起经历思考、规划、编码和测试的全过程,体验技术解决问题的魅力。
116 3
|
存储 缓存 Java
HashMap源码解析
HashMap源码解析
|
消息中间件 存储
RabbitMQ插件详解:rabbitmq_recent_history_exchange【RabbitMQ 七】
RabbitMQ插件详解:rabbitmq_recent_history_exchange【RabbitMQ 七】
326 0
|
安全 Java
自动拆箱调用方法原理
自动拆箱调用方法原理
306 0
|
安全 区块链 Python
币安永续合约加杠杆交易系统开发功能搭建(Python源码)
币安永续合约加杠杆交易系统开发功能搭建(Python源码)
|
存储 并行计算 关系型数据库
PolarDB 开源版 使用pgpool-II实现透明读写分离
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版 使用pgpool-II实现透明读写分离.pgpoo...
495 0
|
缓存 算法 编译器
C语言编译器Parser和CodeGen的过程(中)
C语言编译器Parser和CodeGen的过程(中)
276 0
C语言编译器Parser和CodeGen的过程(中)
|
弹性计算 Linux 网络安全
ECS使用体验
ECS使用体验
183 1
|
开发工具 git
由于不知道Git怎么删除之前错误的代码提交commit,我被开除了!
由于不知道Git怎么删除之前错误的代码提交commit,我被开除了!
222 0
由于不知道Git怎么删除之前错误的代码提交commit,我被开除了!

热门文章

最新文章