首页 > 试题广场 >

单词最近距离

[编程题]单词最近距离
  • 热度指数:5935 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定一个string数组article(有单词构成)和数组中元素的个数n,同时给定数组中的两个单词xy。请返回这两个单词的最短距离(比如两个单词分别在第1和第3个位置,则最短距离为2)。保证两个单词不相同且均在数组中出现,同时保证数组中单词数小于等于1000。

public int getDistance(String[] article, int n, String x, String y) {
        // write code here
        //记录当前X、Y位置即可,然后遍历一遍寻找最小值
        //时间复杂度O(n) 空间复杂度O(1)
        int tempX = -1001,tempY = -1001;
        int ans = 1001;
        for(int i=0;i<article.length;i++){
            if(article[i].equals(x)){
                tempX = i;
                if(Math.abs(tempX-tempY) < ans){
                    ans = Math.abs(tempX - tempY);
                }
            }
            if(article[i].equals(y)){
                tempY = i;
                if(Math.abs(tempX-tempY) < ans){
                    ans = Math.abs(tempX - tempY);
                }
            }
        }
        return ans;
    }
发表于 2019-03-17 14:15:07 回复(0)
import java.util.*;

public class Distance {
    public int getDistance(String[] article, int n, String x, String y) {
        int xi=n,yi=n;
        int res=n;
        for(int i=0;i<n;i++){
            if(article[i].equals(x)){
                xi=i;
                res=Math.min(res,Math.abs(xi-yi));
            }
            if(article[i].equals(y)){
                yi=i;
                res=Math.min(res,Math.abs(xi-yi));
            }
        }
        return res;
    }
}

发表于 2017-05-04 15:25:40 回复(0)

问题信息

难度:
2条回答 19298浏览

热门推荐

通过挑战的用户

查看代码