কম্পিউটার

C++ এ সার্চ সাজেশন সিস্টেম


ধরুন আমাদের কাছে স্ট্রিং পণ্যের একটি অ্যারে এবং একটি স্ট্রিং রয়েছে যাকে searchWord বলা হয়। আমরা একটি মডিউল ডিজাইন করতে চাই যা সার্চওয়ার্ডের প্রতিটি অক্ষর টাইপ করার পরে পণ্য তালিকা থেকে সর্বাধিক তিনটি পণ্যের নাম প্রস্তাব করে। প্রস্তাবিত পণ্যের সার্চওয়ার্ডের সাথে সাধারণ উপসর্গ থাকা উচিত। একটি সাধারণ উপসর্গ সহ তিনটির বেশি পণ্য থাকলে অভিধানের দিক থেকে ন্যূনতম তিনটি পণ্য ফেরত দেয়। তাই সার্চওয়ার্ডের প্রতিটি অক্ষর টাইপ করার পর আমাদের প্রস্তাবিত পণ্যের তালিকা খুঁজে বের করতে হবে।

যদি ইনপুট এরকম হয়:[ "মোবাইল","মাউস","মানিপট","মনিটর","মাউসপ্যাড"], এবং thearchWord হয় "মাউস", তাহলে আউটপুট হবে [["মোবাইল","মানিপট", "মনিটর"],["মোবাইল","মানিপট","মনিটর"], ["মাউস","মাউসপ্যাড"], ["মাউস","মাউসপ্যাড"],["মাউস","মাউসপ্যাড"]]]

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

  • স্ট্রিং টাইপ কী এবং স্ট্রিং মানগুলির তালিকার একটি মানচিত্র m সংজ্ঞায়িত করুন

  • পণ্য অ্যারে সাজান p

  • আমি 0 থেকে p – 1

    এর পরিসরে
    • x :=খালি স্ট্রিং

    • j এর জন্য রেঞ্জ 0 থেকে p[i] – 1

      এর দৈর্ঘ্য
      • x :=x + p[i, j]

      • যদি m[x] <3 এর দৈর্ঘ্য হয়, তাহলে m[x] তালিকায় p[i] ঢোকান

  • স্ট্রিং রেস এর একটি ম্যাট্রিক্স তৈরি করুন, টেম্প সেট করুন :=খালি স্ট্রিং

  • 0 থেকে s - 1

    এর আকারের মধ্যে i এর জন্য
    • temp :=temp + s[i]

    • res এর মধ্যে m[temp] ঢোকান

  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<vector<auto> > v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << "[";
      for(int j = 0; j <v[i].size(); j++){
         cout << v[i][j] << ", ";
      }
   cout << "],";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector<vector<string>> suggestedProducts(vector<string>& p,
   string s) {
      map <string, vector < string > > m;;
      sort(p.begin(), p.end());
      for(int i = 0; i < p.size(); i++){
         string x = "";
         for(int j = 0; j < p[i].size(); j++){
            x += p[i][j];
            if(m[x].size()<3)m[x].push_back(p[i]);
         }
      }
      vector < vector <string> > res;
      string temp = "";
      for(int i = 0; i < s.size(); i++){
         temp += s[i];
         res.push_back(m[temp]);
      }
      return res;
   }
};
main(){
   vector<string> v =
   {"mobile","mouse","moneypot","monitor","mousepad"};
   Solution ob;
   print_vector(ob.suggestedProducts(v, "mouse"));
}

ইনপুট

["mobile","mouse","moneypot","monitor","mousepad"]
"mouse"

আউটপুট

[[mobile, moneypot, monitor, ],[mobile, moneypot, monitor, ],[mouse,
mousepad, ],[mouse, mousepad, ],[mouse, mousepad, ],]

  1. C++ এ () এ স্ট্রিং

  2. C++ এ একটি স্ট্রিং বাইনারি অনুসন্ধান করুন

  3. C++ এ একটি স্ট্রিং টোকেনাইজ করা

  4. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?