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

144 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
Pavlo 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
Jarvis 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();