【发布时间】:2021-06-10 15:27:42
【问题描述】:
class Solution {
public:
vector<string> findAndReplacePattern(vector<string>& words, string p) {
vector<string> ans;
for(auto &w:words){
if(match(w,p))
ans.push_back(w);
}
return ans;
}
bool match(string &w1,string &w2){
unordered_map<char,char>w1_to_w2,w2_to_w1;
for( i=0;i<w1.size();i++)
if( (w1_to_w2.count(w1[i]) && w1_to_w2[w1[i]] != w2[i]) ||
(w2_to_w1.count(w2[i]) && w2_to_w1[w2[i]] != w1[i]) )
return false;
else
w1_to_w2[w1[i]] = w2[i],
w2_to_w1[w2[i]] = w1[i];
return true;
}
};
输入:
words = ["abc","deq","mee","aqq","dkd","ccc"]
模式=“abb”
输出:
["mee","aqq"]
说明:
“mee” 匹配该模式,因为有一个排列 {a -> m, b -> e, ...}。 “ccc”与模式不匹配,因为{a -> c, b -> c, ...} 不是排列,因为a 和b 映射到同一个字母。
这是如何工作的,尤其是count?请逐步解释。
【问题讨论】:
-
您可以在这里找到您要查找的信息:en.cppreference.com/w/cpp/container/unordered_map/count
-
您是在问所有这些代码行是做什么的,或者具体来说是
std::unordered_map::count()做什么?
标签: c++ unordered-map