# Isomorphic Strings - Given two strings s and t, determine if they are isomorphic

### Two strings s and t 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.

idkblogs.com      July 11, 2021

Shubham Verma

# Isomorphic Strings:

Given two strings s and t, determine if they are isomorphic.
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.

# Example 1:

Input: s = "egg", t = "add"
Output: true

# Example 2:

Input: s = "foo", t = "bar"
Output: false

# Example 3:

Input: s = "paper", t = "title"
Output: true

# Constraints:

1 <= s.length <= 5 * 104
t.length == s.length
s and t consist of any valid ascii character.

# Solution:

``````                                    /**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
let size = 256;
var isIsomorphic = function(str1, str2) {

let m = str1.length;
let n = str2.length;

// Length of both strings must be same
// for one to one corresponance
if(m != n)
return false;

// To mark visited characters in str2
let marked = new Array(size);

for(let i = 0; i < size; i++)
marked[i]= false;

// To store mapping of every character
// from str1 to that of str2 and
// Initialize all entries of map as -1.
let map = new Array(size);
map.fill(0);

for(let i = 0; i < size; i++)
map[i]= -1;

// Process all characters one by on
for (let i = 0; i < n; i++)
{

// If current character of str1 is
// seen first time in it.
if (map[str1[i].charCodeAt()] == -1)
{

// If current character of str2
// is already seen, one to
// one mapping not possible
if (marked[str2[i].charCodeAt()] == true)
return false;

// Mark current character of
// str2 as visited
marked[str2[i].charCodeAt()] = true;

// Store mapping of current characters
map[str1[i].charCodeAt()] = str2[i].charCodeAt();
}

// If this is not first appearance of current
// character in str1, then check if previous
// appearance mapped to same character of str2
else if (map[str1[i].charCodeAt()] != str2[i].charCodeAt())
return 0;
}

return 1;
};
``````

# Output:

Isomorphic Strings

Thank you