具体思路:
直接模拟,没啥好说的,之前还想是不是可能有点其他的套路可以操作一下;
具体代码:
class Solution {
public:
vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
vector<string>ret;
for(auto& s:words){
unordered_map<char, char>ump;
set<char>pse;
set<char>sse;
bool flag=true;
for(int i=0;i<s.size();i++){
if(pse.find(pattern[i])!=pse.end()){
//如果已经出现过映射;
if(s[i]!=ump[pattern[i]]){
flag=false;
break;
}
}else{
if(sse.find(s[i])!=sse.end()){
flag=false;
break;
}
ump[pattern[i]]=s[i];//建立映射关系;
sse.insert(s[i]);
pse.insert(pattern[i]);
}
}
if(!flag)
continue;
ret.push_back(s);
}
return ret;
}
};