मान लीजिए कि हमारे पास स्ट्रिंग उत्पादों की एक सरणी है और एक स्ट्रिंग है जिसे searchWord कहा जाता है। हम एक ऐसा मॉड्यूल डिज़ाइन करना चाहते हैं जो searchWord के प्रत्येक वर्ण के टाइप होने के बाद उत्पाद सूची से अधिकतम तीन उत्पाद नामों का सुझाव दे। सुझाए गए उत्पादों में searchWord के साथ सामान्य उपसर्ग होना चाहिए। जब एक सामान्य उपसर्ग के साथ तीन से अधिक उत्पाद हों तो तीन लेक्सिकोग्राफ़िक रूप से न्यूनतम उत्पाद लौटाएं। इसलिए searchWord के प्रत्येक अक्षर को टाइप करने के बाद हमें सुझाए गए उत्पादों की सूची ढूंढनी होगी।
यदि इनपुट इस प्रकार है:[ "मोबाइल", "माउस", "मनीपॉट", "मॉनिटर", "माउसपैड"], और खोज शब्द "माउस" है, तो आउटपुट [["मोबाइल", "मनीपॉट", "मॉनिटर"], ["मोबाइल", "मनीपॉट", "मॉनिटर"], ["माउस", "माउसपैड"], ["माउस", "माउसपैड"], ["माउस", "माउसपैड"]]पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
स्ट्रिंग प्रकार कुंजी और स्ट्रिंग मानों की सूची के मानचित्र m को परिभाषित करें
-
उत्पाद सरणी को क्रमबद्ध करें p
-
मैं के लिए 0 से लेकर p-1 के आकार तक
-
x :=खाली स्ट्रिंग
-
j के लिए 0 से लेकर p की लंबाई तक[i] - 1
-
x :=x + p[i, j]
-
यदि m[x] <3 की लंबाई है, तो p[i] को m[x] सूची में डालें
-
-
-
स्ट्रिंग्स रेस का मैट्रिक्स बनाएं, अस्थायी सेट करें:=खाली स्ट्रिंग
-
मैं के लिए 0 से लेकर s - 1 के आकार तक के लिए
-
अस्थायी:=अस्थायी + एस [i]
-
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, ],]