下面的函数接收两个参数,一个是包含字符串的“ magazine”,另一个是还包含note的“ note”。如果“杂志”包含所有“注释”字符串,我们必须打印是,否则打印否。
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;
}
答案 0 :(得分:0)
在修正错误之后,这是我的正确代码:
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]]++;
}
n = note.size();
for(int i=0; i<n; i++){
if(m.find(note[i]) == m.end() || m[note[i]] == 0){
cout<<"No"<<endl;
return;
}
else{
m[note[i]]--;
}
}
cout<<"Yes"<<endl;
}
答案 1 :(得分:0)
您应该在开始第二个循环之前将“ n” 初始化为“ notes” 的大小。 仍然要获得正确的解决方案,您需要将“ if(m.find(note [i])== m.end()){” 更新为“ if(m.find (note [i])== m.end()|| m [note [i]] == 0){“