[CTCI] 单词最近距离

单词最近距离

题目描述

有一篇文章内含多个单词,现给定两个单词,请设计一个高效算法,找出文中这两个单词的最短距离(即最少相隔的单词数,也就是两个单词在文章中位置的差的绝对值)。

给定一个string数组article,代表所给文章,同时给定文章的单词数n和待查找的两个单词xy。请返回两个单词的最短距离。保证两个单词均在文中出现且不相同,同时保证文章单词数小于等于1000。

 1 class Distance {
 2 public:
 3     int getDistance(vector<string> article, int n, string x, string y) {
 4         // write code here
 5         int px = -1, py = -1;
 6         int res = n;
 7         for (int i = 0; i < n; ++i) {
 8             if (article[i] == x) {
 9                 px = i;
10                 if (py != -1) res = min(res, px - py);
11             } else if (article[i] == y) {
12                 py = i;
13                 if (px != -1) res = min(res, py - px);
14             }
15         }
16         return res;
17     }
18 };
时间: 2024-10-16 12:46:27

[CTCI] 单词最近距离的相关文章

单词最近距离

题目描述 有一篇文章内含多个单词,现给定两个单词,请设计一个高效算法,找出文中这两个单词的最短距离(即最少相隔的单词数,也就是两个单词在文章中位置的差的绝对值). 给定一个string数组article,代表所给文章,同时给定文章的单词数n和待查找的两个单词x和y.请返回两个单词的最短距离.保证两个单词均在文中出现且不相同,同时保证文章单词数小于等于1000. class Distance { public: int getDistance(vector<string> article, in

Elasticsearch 常用基本查询

安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文档进行搜索:title(标题),authors(作者),summary(摘要),release date(发布时间)以及number of reviews(评论数量),首先,让我们创建一个新的索引,并通过bulk API查询文档: 为了展示Elasticsearch中不同查询的用法,首先在Elast

Lucene教程具体解释

注明:本文是由本人在开发有关基于lucene资源检索系统时的一点总结,当中一部分是自己依据开发过程自己总结的,也有部分是摘自网络,因无法获取当时摘文的地址,所以在此没有写源地址. 转载请声明出处 Lucene-3.0.0配置 一.Lucene开发环境配置 step1.Lucene开发包下载 step2.Java开发环境配置 step3.Tomcat安装 step4.Lucene开发环境配置 解压下载的lucene-3.0.0.zip,能够看到lucene-core-3.0.0.jar和lucen

基于Smadja算法的搭配词自动提取

搭配词(collocation) 广义而言,搭配词(collocation)是指两个或多个词一招语言习惯性结合在一起表示某种特殊意义的词汇.搭配词在不同的研究领域上又不同的解读,尚未有一致性的定义.大概的意思就是词语的习惯搭配了,就是学英语时老师一直拿来搪塞我们的那种『习惯搭配』.比如sit in traffic,表示堵车或者在通勤上花费了非常多时间的意思,那么sit_traffic就是一个搭配词.其中sit称为base word,traffic称为collocate. 所以collocatio

InnoDB全文索引基础

全文索引: 官方文档: https://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html 参考: http://blog.csdn.net/u011734144/article/details/52817766 http://www.cnblogs.com/olinux/p/5169282.html 全文检索通常使用的是倒排索引. 内容详见姜大神的InnoDB存储引擎2 书上 Page231~Page248 InnoDB存储引擎从1.2.x

python css基本操作

1. 概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style = 'key1:value1;key2:value2;' 行内式: 在标签中使用 style='xx:xxx;'单独加在某个标签上,style增加其他属性需要以分号分隔: <div style="background-color:darkgrey;height: 100px;width:10

linux的基本介绍和命令行

<linux的基本介绍和命令行> [什么是Shell] (1)简介:shell是一款保护内核的软件.bash是shell的一个版本. 性质:命令解析器 用途:接受用户命令 1)在计算机科学中,shell俗称壳(用来区别核),是指"提供使用者使用界面"的软件(命令解析器).他类似于DOS和后来的cmd.exe.他接收用户命令,然后调用相应的应用程序.同时他又是一种程序设计语言.作为命令语言,他交互式解释和执行用户输入的命令,或者自动地解释和执行预先设定好的一连串命令:作为程序

目标识别:Bag-of-words表示图像

BOW (bag of words) 模型简介 Bag of words模型最初被用在文本分类中,将文档表示成特征矢量.它的基本思想是假定对于一个文本,忽略其词序和语法.句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的.简单说就是讲每篇文档都看成一个袋子(因为里面装的都是词汇,所以称为词袋,Bag of words即因此而来),然后看这个袋子里装的都是些什么词汇,将其分类.如果文档中猪.马.牛.羊.山谷.土地.拖拉机这样的词汇多些,而银行.大厦.汽车.公园这样的词汇少些,我们就倾

CSS文本简单设置

文本的设置直接影响到用户对界面的感受,好的文本设置能够让用户对界面有一种赏心悦目的感受,在这地方我们来简单的说说说对文本设置的时候,有哪些格式. 文本设置的时候我们应该注意什么: 平时我们文本设置的时候,主要是注重对文本的颜色设置,文本的对齐方式.文本的修饰,文本的转换和文本的缩进.以及关于文本设置的时候文字或者是行和字符之间的距离的一些设置.那么我们如今就来一一的看一下这些设置. 在说这些设置之前我们有必要了解CSS中的文本属性,由于全部的设置都是对文本的属性进行的设置,那么CSS中的文本属性