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