人民搜索2

简介:

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






本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/archive/2012/12/13/2817109.html,如需转载请自行联系原作者

目录
相关文章
|
机器学习/深度学习 自然语言处理
大语言模型(LLM)框架及微调 (Fine Tuning)
大语言模型(LLM)框架及微调 (Fine Tuning)
863 0
|
6月前
|
存储 虚拟化 Docker
|
JSON 前端开发 搜索推荐
Laravel系列开源Dcat admin礼盒商城后台管理项目
Laravel系列开源Dcat admin礼盒商城后台管理项目
487 0
|
消息中间件 缓存 运维
不要小看一个Redis!从头到尾全是精华,阿里Redis速成笔记太香了
Redis想必大家都听说过,不管是面试还是工作上我们都能见到。但是Redis到底能干什么?又不能干什么呢?(如下图)
|
程序员 JavaScript
30、地址填写(姓名、电话、省市区)
前言:上章我们借助vant的AddressList列表组件实现了地址列表页面的快速编写,同样,这一章节我们还是借助vant组件,快速完成新增地址的编辑功能页面。
2345 106
|
安全 API 开发工具
在阿里云OpenAPI中,SDK的身份验证方式
在阿里云OpenAPI中,SDK的身份验证方式
562 1
|
算法 数据可视化 Docker
利用MAGeCK算法处理CRISPR Screen数据
上次文章结尾时候提到了MAGeCK RRA算法处理,这次我们就来学习一下,Model-based Analysis of Genome-wide CRISPR-Cas9 Knockout(MAGeCK) 是一个可以从全基因组CRISPR-CAS9筛查技术中识别重要基因计算工具。Mageck是由Wei Li 和 Shirley Liu lab共同开发维护的。
4898 0
|
SQL 缓存 Java
第03篇:Mybatis核心类详细介绍
前面我们知道Mybatis的解析原理,知道了在 `Configuration` 、`MapperBuilderAssistant` 出现了很多核心的类。 正是由这些类来实现了,Mybatis的核心功能。所以要想完全搞懂 Mybatis,这些类就必须要进行深入的研究,废话不多少,直接就开始吧。
405 0
第03篇:Mybatis核心类详细介绍
|
自动驾驶 计算机视觉
CV:无人驾驶汽车中涉及的计算机视觉技术简介
CV:无人驾驶汽车中涉及的计算机视觉技术简介
CV:无人驾驶汽车中涉及的计算机视觉技术简介
|
人工智能 前端开发 项目管理
基于QT开发的开源局域网联机UNO卡牌游戏
我们开发了一款可联机对战的UNO纸牌游戏: 基本功能: - 友好的图形用户界面 - 支持2种uno游戏模式 - 支持 2 - 8人参与游戏 - 支持单人游戏,其他参与者为AI‘ - 支持不同玩家局域网内联机参与游戏
1291 0
基于QT开发的开源局域网联机UNO卡牌游戏