LeetCode in TypeScript

205. Isomorphic Strings

Easy

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.

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:

Solution

function isIsomorphic(s: string, t: string): boolean {
    if (s.length !== t.length) {
        return false
    }
    const mapS = new Map<string, string>()
    const mapT = new Map<string, string>()
    for (let i = 0; i < s.length; i++) {
        if (mapS.has(s[i]) || mapT.has(t[i])) {
            if (mapS.get(s[i]) !== t[i] || mapT.get(t[i]) !== s[i]) {
                return false
            }
        } else {
            mapS.set(s[i], t[i])
            mapT.set(t[i], s[i])
        }
    }
    return true
}

export { isIsomorphic }