/**
* @param {string} pattern
* @param {string} str
* @return {boolean}
*/
var wordPattern = function(pattern, str) {
var patterns = pattern.split("");
var strs = str.split(" ");
var l1 = patterns.length;
var l2 = strs.length;
if(l1!==l2){
return false;
}
var map_pattern = {};
var map_str = {};
var pos = {};
patterns.forEach(function(p,index){
if(map_pattern[p]===undefined){
map_pattern[p] = [];
map_pattern[p].push(index);
pos[index] = index;
}else{
map_pattern[p].push(index);
}
});
strs.forEach(function(s,index){
if(map_str[s]===undefined){
map_str[s] = [];
map_str[s].push(index);
pos[index] = index;
}else{
map_str[s].push(index);
}
});
for(var key in pos){
if(map_pattern[patterns[key]].toString()!==map_str[strs[key]].toString()){
return false;
}
}
return true;
};
这道题给的tag是hash table,因此就以此为思路写下去了。
利用map,记录相同的内容的位置:键为字符串内容,值为出现该字符串的位置。
两个字符串分别记录为map数据,然后对比连个map是否相等即可。