题目:
题解:
class Solution {
public:
vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
vector<string> ans;
int len = pattern.length();
for(string &word : words){
if(word.size() != len) continue;
vector<char> visit(26,'&');
vector<char> find(26,'&');
for(int i=0;i<len;++i){
if(visit[word[i]-'a']!='&'){
if(visit[word[i]-'a'] != pattern[i]) goto next;
}
if(find[pattern[i]-'a'] != '&'){
if(find[pattern[i]-'a']!=word[i]) goto next;
}
visit[word[i]-'a'] = pattern[i];
find[pattern[i]-'a'] = word[i];
}
ans.push_back(word);
next:;
}
return ans;
}
};
结果: