मान लीजिए कि हमारे पास शब्दों की एक सूची है और अन्य दो शब्द हैं जिन्हें शब्द 1 और शब्द 2 कहा जाता है, हमें सूची में इन दो शब्दों के बीच सबसे छोटी दूरी का पता लगाना है। यहां शब्द 1 और शब्द 2 समान हो सकते हैं और वे सूची में दो अलग-अलग शब्दों का प्रतिनिधित्व करते हैं। आइए मान लें कि शब्द =["अभ्यास", "बनाता है", "पूर्ण", "कौशल", "बनता है"]।
इसलिए, यदि इनपुट शब्द 1 ="मेक", वर्ड 2 ="कौशल" जैसा है, तो आउटपुट 1
होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रिट:=10^9, एल1:=10^9, एल2:=-10^9
-
n :=शब्दों का आकार
-
इनिशियलाइज़ i :=0 के लिए, जब i
-
यदि शब्द [i] शब्द 1 के समान है, तो -
-
एल1:=मैं
-
-
यदि शब्द [i] शब्द 2 के समान है, तो -
-
यदि शब्द 1 शब्द 2 के समान है, तो -
-
एल1:=एल2
-
-
l2:=मैं
-
-
ret :=न्यूनतम |l2 - l1| और सेवानिवृत्त
-
-
वापसी रिट
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: int shortestWordDistance(vector<string<& words, string word1, string word2) { int ret = 1e9; int l1 = 1e9; int l2 = -1e9; int n = words.size(); for (int i = 0; i < n; i++) { if (words[i] == word1) { l1 = i; } if (words[i] == word2) { if (word1 == word2) { l1 = l2; } l2 = i; } ret = min(abs(l2 - l1), ret); } return ret; } }; main(){ Solution ob; vector<string< v = {"practice", "makes", "perfect", "skill", "makes"}; cout << (ob.shortestWordDistance(v, "makes", "skill")); }
इनपुट
{"practice", "makes", "perfect", "skill", "makes"},"makes", "skill"
आउटपुट
1