# 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.

Shubham Verma      July 11, 2021

## 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

# Strongly Recommended Books For You:

Reading books opens the door to allow in more lights, If we want to know a man of rare intellect, try to know what books he/she reads.

# For Other Countries (United States, United Kingdom, Spain, Italy, Germany, France, Canada, etc)

Thank you

I appreciate you taking the time to read this article. The more that you read, the more things you will know. The more that you learn, the more places you'll go. If you’re interested in Node.js or JavaScript this link will help you a lot.

To read more about the technologies, Please subscribe us, You'll get the monthly newsletter having all the published article of the last month.