কম্পিউটার টিউটোরিয়াল

C++-এ শর্টেস্ট ওয়ার্ড ডিস্ট্যান্স III


ধরা যাক একটি ওয়ার্ড লিস্ট এবং দুটি ওয়ার্ড word1 ও word2 দেওয়া আছে। লিস্টে এই দুটি ওয়ার্ডের মধ্যবর্তী ন্যূনতম দূরত্ব বের করতে হবে। এখানে word1 ও word2 একই হতে পারে এবং তারা লিস্টে দুটি আলাদা ওয়ার্ডকে প্রতিনিধিত্ব করে।

যেমন, words = ["practice", "makes", "perfect", "skill", "makes"] হলে, word1 = "makes", word2 = "skill" এর জন্য আউটপুট হবে 1

সমাধানের ধাপগুলো:

  • ret := 10^9, l1 := 10^9, l2 := -10^9

  • n := words.size()

  • প্রতি ইনডেক্স i এর জন্য:

    • যদি words[i] == word1 হয়, তবে l1 := i

    • যদি words[i] == word2 হয়, তবে:

      • যদি word1 == word2 হয়, তবে l1 := l2

      • l2 := 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

  1. C++-এ এডিট ডিস্ট্যান্স (Edit Distance)

  2. C++-এ কন্টেইনস ডুপ্লিকেট III

  3. C++-এ অগ্লি নাম্বার III

  4. C++-এ টার্গেট কালারের ন্যূনতম দূরত্ব খুঁজুন