链接:
链接: 890. 查找和替换模式
描述,示例和提示
代码:
class Solution {
public:
bool mapping(string& s1,string& s2)
{
unordered_map<char,char> mp;
for(int i = 0;i<s1.size();i++)
{
if(!mp.count(s1[i]))
mp[s1[i]]=s2[i];
else if(mp[s1[i]]!=s2[i])
return false;
}
return true;
}
vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
vector<string> ret;
for(auto& word:words)
{
if(mapping(word,pattern) && mapping(pattern,word))
ret.push_back(word);
}
return ret;
}
};
题目解析:
mapping(s1, s2),返回true表示 :s1中的每个字符只对应s2中的一个字符,但可能存在多个字符对应一个字符的情况, 如abb与ccc, a --> c、 b --> c;
此时再进行 mapping(s2, s1), 如果返回true 则s2中的每个字符只对应s1中的一个字符,则保证 s1 与 s2中的字符一一对应。