给定一个string数组article(有单词构成)和数组中元素的个数n,同时给定数组中的两个单词x和y。请返回这两个单词的最短距离(比如两个单词分别在第1和第3个位置,则最短距离为2)。保证两个单词不相同且均在数组中出现,同时保证数组中单词数小于等于1000。
class Distance {
public:
int getDistance(vector<string> article, int n, string x, string y) {
vector<int>vecx=vector<int>(n,0);
vector<int>vecy=vector<int>(n,0);
for (int i=0; i<n; i++) {
if(article[i]==x){
vecx[i]=1;
}
if(article[i]==y){
vecy[i]=1;
}
}
int min1=1001;
for(int i=0;i<n;i++)
{
if(vecy[i]==0)
continue;
int yleft=i;
for(;yleft>=0;yleft--){
if(vecx[yleft]!=0)
break;
}
if(yleft<0)
{
yleft=-10000;
}
int yright=i;
for(;yright<n;yright++){
if(vecx[yright]!=0)
break;
}
if(yright>=n)
{
yright=10000;
}
min1= min(min1,min((i-yleft),(yright-i)));
}
return min1;
}
};