Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg"
, "add"
, return true.
Given "foo"
, "bar"
, return false.
Given "paper"
, "title"
, return true.
Note:
You may assume both s and t have the same length.
Subscribe to see which companies asked this question
Tags
Hash Table
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------Same idea with Word Pattern
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isIsomorphic = function (s, t) {
var len1 = s.length, len2 = t.length;
if (len1 !== len2) {
return false;
}
var mapA = [];
for (var i = 0; i < len1; i++) {
if (s[i] in mapA) {
if (mapA[s[i]] !== t[i]) {
return false;
}
} else {
mapA[s[i]] = t[i];
}
}
var mapB = [];
for (var j = 0; j < len1; j++) {
if (t[j] in mapB) {
if (mapB[t[j]] !== s[j]) {
return false;
}
} else {
mapB[t[j]] = s[j];
}
}
return true;
};