Isomorphic Strings
Description
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.
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
Note:
You may assume both s and t have the same length.
Solution(javascript)
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
const isIsomorphic = (s, t = '') => {
const count = str => Array.prototype.reduce.call(str, (map, c, index) => {
if (map[c]) {
map[c].push(index)
}
map[c] = [index]
return map
}, {})
const mapS = count(s)
const mapT = count(t)
for (let i = 0; i < s.length; i++) {
const charS = s[i]
const charT = t[i]
for (let j = 0; j < mapS[charS].length; j++) {
if (mapS[charS][j] !== mapT[charT][j]) {
return false
}
}
}
return true
}