ধরা যাক একটি ওয়ার্ড লিস্ট এবং দুটি ওয়ার্ড word1 ও word2 দেওয়া আছে। লিস্টে এই দুটি ওয়ার্ডের মধ্যবর্তী ন্যূনতম দূরত্ব বের করতে হবে। এখানে word1 ও word2 একই হতে পারে এবং তারা লিস্টে দুটি আলাদা ওয়ার্ডকে প্রতিনিধিত্ব করে।
যেমন, words = ["practice", "makes", "perfect", "skill", "makes"] হলে, word1 = "makes", word2 = "skill" এর জন্য আউটপুট হবে 1
সমাধানের ধাপগুলো:
ret := 10^9, l1 := 10^9, l2 := -10^9n := words.size()প্রতি ইনডেক্স
iএর জন্য:যদি
words[i] == word1হয়, তবেl1 := iযদি
words[i] == word2হয়, তবে:যদি
word1 == word2হয়, তবেl1 := l2l2 := i
ret := min(|l2 - l1|, ret)
retরিটার্ন করব
উদাহরণ
নিচের কোডটি দেখুন −
#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;
}
};
int 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