<分区>
如果一个单词中的字母可以重新映射以获得第二个单词,则两个单词被称为同构。重新映射字母意味着用另一个字母替换所有出现的字母,同时字母的顺序保持不变。没有两个字母可以映射到同一个字母,但是一个字母可以映射到它自己。
Example:
('ABC','XYZ') //true
('ABCCBA','XYZZYX') //true
('ABCABC','XYXXYX') //false
我的代码使用了两个 hashmap。有没有办法使用单个 HashMap 来做到这一点?
使用两个 map 的代码:
function isomorphic(str1, str2){
if(str1.length !== str2.length) return false;
var map1={}, map2={};
for (var i=0; i< str1.length;i++) {
if (typeof map1[str1[i]] == "undefined" && typeof map2[str2[i]] == "undefined"){
map1[str1[i]] = str2[i];
map2[str2[i]] = str1[i];
}
else{
if(map1[str1[i]] !== str2[i] && map2[str2[i]] !== str1[i]){
return false;
}
}
}
return true;
}