243 Shortest Word Distance
#include <iostream>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
int shortestDistance(vector<string> *words, string word1, string word2)
{
vector<int> minElements;
vector<int> word1Positions;
vector<int> word2Positions;
int word1Pos, word2Pos;
int size = (*words).size();
for (int i = 0; i < size; i++)
{
// store all positions of first word
string currentWord = (*words).at(i);
if (currentWord == word1)
word1Positions.push_back(i);
else if(currentWord == word2)
word2Positions.push_back(i);
}
// find the minimum displacement between each word
int difference;
int j = 0;
while (word2Positions.size() > j)
{
for (int i = 0; i < word1Positions.size(); i++)
{
difference = abs(((word1Positions).at(i)) - ((word2Positions).at(j)));
minElements.push_back(difference);
}
j++;
}
int minElement = *min_element(minElements.begin(), minElements.end());
cout << minElement << endl;
return minElement;
}
int main()
{
vector<string> words = { "practice", "makes", "perfect", "coding", "makes" };
string word1 = "coding", word2 = "practice"; // 3
string word3 = "makes", word4 = "coding"; // 1
shortestDistance(&words, word1, word2);
shortestDistance(&words, word3, word4);
}Last updated