class Solution {
public:
vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
vector<string> ans;
int t=words.size(),cnt=pattern.size();
for (int i=0;i<t;i++)
if (words[i].size()==cnt){
bool check=true;
bool flag[30]; //字母b作为映射结果,已经存在映射规则
char f[30]; //字母a映射的字母f[a]
for (int i=0;i<26;i++)
f[i]=flag[i]=0;
for (int j=0;j<cnt;j++){
if (!f[words[i][j]-'a']){ //新建映射规则
f[words[i][j]-'a']=pattern[j];
if (flag[pattern[j]-'a']){ //映射规则矛盾(多对一)
check=false;
break;
}
else
flag[pattern[j]-'a']=true;
}
else if ((f[words[i][j]-'a']!=pattern[j])){ //不能匹配
check=false;
break;
}
}
if (check)
ans.push_back(words[i]);
}
return ans;
}
};
