Auto Complete problem
Cristian was developing an application. He was using in-built Auto Complete function, which was slow and taking more execution time than expected. So, he thought of taking help from you to write the fast Auto Complete function. He will give you a dictionary as argument, your task is to give suggestions for Auto Complete on every character is entered in Text field. In a dictionary all words will be distinct and if the word which is typed is available in dictionary then that word will also come in suggestion. For example if 'a' is typed and 'a' is present in dictionary, then it will come in suggestion.
P.S. - Suggestions will be in ascending order. Print 0 if no suggestions found.
Input:
First line represents T test case. Every test case contains 3 lines of input. First line of every test case represents number of words in dictionary. Second line of every test case represents words of dictionary. Third line of every test case represents the word to be searched in dictionary.
Output:
Print the suggestions for each word typed in new line in ascending order. Print 0 if no suggestions found.
Constraints:
1 ≤ T ≤ 100
1 ≤ Number of words in Dict ≤ 50
1 ≤ Length of every word of Dict ≤ 50
1 ≤ query length ≤ 50
example 1:
input:
4
abc ab a abcd
abcd
output:
a ab abc abcd
ab abc abcd
abc abcd
abcd
0
example 2:
input:
5
abc ab a abcd aba
abcd
output:
a ab aba abc abcd
ab aba abc abcd
abc abcd
abcd
0
c++ implementation:
#include <bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
int t;
cin>>t;
while(t--){
vector<string>v;
ll n;
cin>>n;
for(int i=0;i<n;i++){
string c;
cin>>c;
v.push_back(c);
}
sort(v.begin(),v.end());
//reverse(v.begin(),v.end());
map<string,vector<string>>m;
string s;
cin>>s;
string d = "";
for(int i=0;i<v.size();i++){
d = "";
for(int j=0;j<v[i].size();j++){
d+=v[i][j];
m[d].push_back(v[i]);
}
}
string f = "";
for(int i=0;i<s.size();i++){
f+=s[i];
if(m[f].size()>0){
for(int i=0;i<m[f].size();i++){
cout<<m[f][i]<<" ";
}
cout<<endl;
}
}
cout<<0<<endl;
}
return 0;
}
No comments