[CTCI] 单词最近距离
题目描述
有一篇文章内含多个单词,现给定两个单词,请设计一个高效算法,找出文中这两个单词的最短距离(即最少相隔的单词数,也就是两个单词在文章中位置的差的绝对值)。
给定一个string数组article,代表所给文章,同时给定文章的单词数n和待查找的两个单词x和y。请返回两个单词的最短距离。保证两个单词均在文中出现且不相同,同时保证文章单词数小于等于1000。
 class Distance {
 public:
     int getDistance(vector<string> article, int n, string x, string y) {
         // write code here
         int px = -, py = -;
         int res = n;
         for (int i = ; i < n; ++i) {
             if (article[i] == x) {
                 px = i;
                 if (py != -) res = min(res, px - py);
             } else if (article[i] == y) {
                 py = i;
                 if (px != -) res = min(res, py - px);
             }
         }
         return res;
     }
 };
[CTCI] 单词最近距离的更多相关文章
- writing-mode,文字竖直书写,字符之间距离,单词之间距离
		
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
 - (转)对Lucene PhraseQuery的slop的理解
		
所谓PhraseQuery,就是通过短语来检索,比如我想查"big car"这个短语,那么如果待匹配的document的指定项里包含了"big car"这个短语 ...
 - web前端基础知识-(二)CSS基本操作
		
1. 概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style ...
 - python css基本操作
		
1. 概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style ...
 - Vim 常用技巧:
		
Vim 常用技巧: 将回车由默认的8个空格改为4个空格: 命令:set sw=4 修改tab为4空格: 命令:set ts=4 设置每一级的缩进长度: 命令:set shiftwidth=4 设置文件 ...
 - 目标识别:Bag-of-words表示图像
		
BOW (bag of words) 模型简介 Bag of words模型最初被用在文本分类中,将文档表示成特征矢量.它的基本思想是假定对于一个文本,忽略其词序和语法.句法,仅仅将其看做是一些词汇的 ...
 - Lucene教程具体解释
		
(建立索引)] )中生成的索引文件的存放地址.详细步骤简单介绍例如以下: 1.创建Directory对象,索引目录 2.创建IndexSearch对象,建立查询(參数是Directory对象) 3.创 ...
 - Mac下快捷键列表
		
主界面 command + tab 切换程序 command + ` 在程序内切换界面 command + w 关闭界面 command + q 关闭程序 command + option + esc ...
 - mac上的键盘生活——快捷键列表
		
主界面 command + tab 切换程序 command + ` 在程序内切换界面 command + w 关闭界面 command + q 关闭程序 文本编辑 Com ...
 
随机推荐
- excel怎么在插入的方框上打勾
			
本例主要介绍如何在excel中插入带对勾的方框. 工具/原料 Excel 操作步骤: 在编辑Excel表格模板时,比如说简历.人力信息登记表等,经常需要有一些可选项,如下例的婚姻状况就包括“有配 ...
 - 3299 有序数组合并求第K大问题
			
题目描述 Description 给出两个有序数组A和B(从小到大有序),合并两个有序数组后新数组c也有序,询问c数组中第k大的数 假设不计入输入输出复杂度,你能否给出一个O(logN)的方法? 输入 ...
 - ios中滚动页面
			
- (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { int width=frame. ...
 - Swift3 Scanner用法之判断是否数字、提取字符串里的数字
			
1.判断是否数字 /// 判断是否是数字 /// /// - Parameter string: <#string description#> /// - Returns: <#re ...
 - kafaka可视化工具
			
许多中间件系统都提供了良好的可视化系统.MySQL有workbench,navcat,php版的mysqladmin等可视化程序.Redis.MongoDB也有开源的可视化程序.只要官方提供了探索数据 ...
 - maven groupID 和 ArtifactID的区别与作用
			
GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构. ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称.一般Gro ...
 - 使用Beetle简单构建聊天室程序
			
之前已经讲解了Beetle简单地构建网络通讯程序,那程序紧紧是讲述了如何发送和接收数据:这一章将更深入的使用Beetle的功能,主要包括消息制定,协议分析包括消息接管处理等常用的功能.为了更好的描述所 ...
 - 关于tensorboard启动问题
			
我在学习过程中遇到了tensorboard无法启动的问题. 按照网上的教程,我无法正常启动tensorboard,全过程没有报错,但是打开tensorboard显示 No dashboards are ...
 - MySQL USING 和 HAVING 用法
			
USING 用于表连接时给定连接条件(可以理解为简写形式),如 SELECT * FROM table1 JOIN table2 ON table1.id = table2.id 使用 USING ...
 - centos6.4安装GitLab
			
参考文章: http://www.pickysysadmin.ca/2013/03/25/how-to-install-gitlab-5-0-on-centos-6/ yum安装redis的方法: h ...