मान लीजिए कि हमारे पास शब्दों की एक सूची है और अन्य दो शब्द हैं जिन्हें शब्द 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