কম্পিউটার

C++-এ সংক্ষিপ্ততম শব্দ দূরত্ব III


ধরুন আমাদের কাছে শব্দের একটি তালিকা আছে এবং word1 এবং word2 নামক আরও দুটি শব্দ আছে, আমাদের তালিকায় এই দুটি শব্দের মধ্যে সবচেয়ে কম দূরত্ব খুঁজে বের করতে হবে। এখানে word1 এবং word2 একই হতে পারে এবং তারা তালিকায় দুটি পৃথক শব্দ উপস্থাপন করে। আসুন ধরে নিই যে শব্দগুলি =["অভ্যাস", "মেকস", "পারফেক্ট", "স্কিল", "মেকস"]।

সুতরাং, যদি ইনপুট হয় word1 =“makes”, word2 =“skill”, তাহলে আউটপুট হবে 1

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

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

  • n :=শব্দের আকার

  • আরম্ভ করার জন্য i :=0, যখন i

    • যদি শব্দ[i] শব্দ 1 এর মত হয়, তাহলে −

      • l1 :=i

    • যদি শব্দ[i] শব্দ 2 এর মত হয়, তাহলে −

      • যদি word1 শব্দ2 এর মত হয়, তাহলে −

        • l1 :=l2

      • l2 :=i

    • ret :=সর্বনিম্ন |l2 - l1| এবং 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;
   }
};
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++ এ দূরত্ব সম্পাদনা করুন

  2. C++ এ ডুপ্লিকেট III রয়েছে

  3. C++ এ কুৎসিত নম্বর III

  4. C++ এ টার্গেট কালার থেকে সবচেয়ে কম দূরত্ব