这题用到了一一对应映射关系的双射问题,也就是要验证a–>dog和dog–>a的关系都是唯一的!
代码:
class Solution {
public:
bool wordPattern(string& pattern, string& s) {
istringstream is(s);
string tmp;
vector<string> strs;
while(is>>tmp)
strs.push_back(tmp);
if(strs.size()!=pattern.size())
return false;
unordered_map<char,string> m1;
unordered_map<string,char> m2;
for(int i=0;i<pattern.size();i++){
if(m1[pattern[i]]!="" && m1[pattern[i]]!=strs[i])
return false;
m1[pattern[i]] = strs[i];
if(m2[strs[i]]!=NULL&&m2[strs[i]]!=pattern[i])
return false;
m2[strs[i]] = pattern[i];
}
return true;
}
};