what is wrong with this code ? it's not showing any output after executing

141 Views Asked by At

The function must return an array of integers representing the frequency of occurrence of each query string in strings.

matchingStrings has the following parameters:

string strings[n] - an array of strings to search string queries[q] - an array of query strings

Example

strings[]={"ab","ab","abc"}
queries[]={"ab","abc","bc"}

the output will be

result[]={2,1,0}

.

vector<int> matchingStrings(vector<string> strings, vector<string> queries) {
   
   
    unordered_multiset<string> m;
    
    int ms=0,l=sizeof(strings)/sizeof(strings[0]),k=sizeof(queries)/sizeof(queries[0]);
    vector<int> res;
    int y;
    
    for(int i=0;i<l;i++)
    {
        m.insert(strings[i]);
    }
    
    for(int j=0;j<k;j++)
    {
        y=(m.count(queries[j]));
        res.push_back(y);
        
    
    }

     return res;
}
2

There are 2 best solutions below

0
On BEST ANSWER

That code works. I don't know why you didn't use size() method in vector.

#include <bits/stdc++.h>
using namespace std;
vector<int> matchingStrings(vector<string> strings, vector<string> queries) {


    unordered_multiset<string> m;

    int ms=0;
    vector<int> res;
    int y;

    for(int i=0;i<strings.size();i++)
    {
        m.insert(strings[i]);
    }
    for(int j=0;j<queries.size();j++)
    {
        y=(m.count(queries[j]));
        res.push_back(y);
    }

    return res;
}
int main() {
    vector <string> strings;
    vector <string> queries;
    strings.push_back("ab");
    strings.push_back("ab");
    strings.push_back("abc");
    queries.push_back("ab");
    queries.push_back("abc");
    queries.push_back("bc");
    for(int item : matchingStrings(strings,queries)){
        cout<<item<<' ';
    }

}
0
On

You get the sizes of your input vectors wrong, they would be constant with sizeof operator at compile-time. Get their sizes/lengths like this:

int ms = 0;
std::size_t l = strings.size(), k = queries.size();