【发布时间】:2020-06-15 04:56:18
【问题描述】:
下面的函数接收两个参数,一个是包含字符串的'magazine',另一个是包含注释的'note'。如果 'magazine' 包含所有 'note' 字符串,我们必须打印 Yes 否则 No。
void checkMagazine(vector<string> magazine, vector<string> note) {
map<string, int> m;
int n = magazine.size();
for(int i=0; i<n ; i++){
if(m.find(magazine[i]) == m.end())
m[magazine[i]] = 1;
else
m[magazine[i]]++;
}
for(int i=0; i<n; i++){
if(m.find(note[i])==m.end()){
cout<<"No"<<endl;
return;
}
else{
m[note[i]]--;
}
}
cout<<"Yes"<<endl;
}
【问题讨论】:
-
请发送minimal reproducible example。例如你怎么调用这个函数?该代码取决于
notes至少与magazine一样大。 -
如果笔记大小不同..
-
因为 n 是杂志的大小,当杂志的大小大于笔记的大小时,它会抛出异常。第二个 for 循环应该检查直到音符的长度。
-
第一个循环体可能只是
m[magazine[i]]++;,未知条目默认为 0 -
知道了,在第二个 for 循环之前应该有
n = note.size();。
标签: c++ dictionary vector stl