0

该函数必须返回一个整数数组,表示字符串中每个查询字符串的出现频率。

matchStrings 有以下参数:

string strings[n] - 要搜索的字符串数组 string queries[q] - 查询字符串数组

例子

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

输出将是

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;
}
4

2 回答 2

1

您输入向量的大小错误,它们sizeof在编译时将与运算符保持一致。像这样获取它们的尺寸/长度:

int ms = 0;
std::size_t l = strings.size(), k = queries.size();
于 2020-12-27T11:03:05.263 回答
0

该代码有效。我不知道你为什么不在向量中使用 size() 方法。

#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<<' ';
    }

}
于 2020-12-27T11:06:29.340 回答