程序员面试金典——单词最近距离
2017-06-03 10:38
274 查看
题目描述
有一篇文章内含多个单词,现给定两个单词,请设计一个高效算法,找出文中这两个单词的最短距离(即最少相隔的单词数,也就是两个单词在文章中位置的差的绝对值)。给定一个string数组article,代表所给文章,同时给定文章的单词数n和待查找的两个单词x和y。请返回两个单词的最短距离。保证两个单词均在文中出现且不相同,同时保证文章单词数小于等于1000。
思路:记录每次出现的位置,然后比较差值。因为是顺序取的字符串,所以不用担心index变化相差有误。
import java.util.*;
public class Distance {
public int getDistance(String[] article, int n, String x, String y) {
// write code here
int xindex = -1;
int yindex = 1000;
int min = 1000;
for(int i=0;i<article.length;i++){
if(article[i].equals(x)){
xindex = i;
}
if(article[i].equals(y)){
yindex = i;
}
min = min<=Math.abs(xindex-yindex)?min:Math.abs(xindex-yindex);
}//for
return min;
}
}
相关文章推荐
- 程序员面试金典:另类加法、单词最近距离
- 程序员面试金典——解题总结: 9.18高难度题 18.5有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离
- 单词的最近距离
- 《Cracking the Coding Interview程序员面试金典》----单词最近距离
- 单词最近距离
- [CTCI] 单词最近距离
- 单词最近距离
- hdu 2823 The widest road (旋转卡壳求两凸包的最近距离)
- ESL作业笔记2.3:均匀分布情况下最近邻距离的中值
- LeetCode-243:Shortest Word Distance (单词最短距离)
- POJ3608(旋转卡壳--求两凸包的最近点对距离)
- leetcode 658. Find K Closest Elements 寻找绝对距离最近K个元素+ 双指针遍历
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- poj 3608 Bridge Across Islands 旋转卡壳(两个凸包的最近距离)
- 已知三维空间两条直线,如何计算两条直线距离最近的位置的中点
- hust1346(两个线段的最近距离和最小距离)
- (算法)两个单词的最短距离
- 一棵排序二叉树(即二叉搜索树BST),令 f=(最大值+最小值)/2,设计一个算 //法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。
- 72. Edit Distance 两个单词的编辑距离
- 一个求迷宫入口到出口最近距离的程序