--- title: '205. Isomorphic Strings' description: Given two strings s and t, determine if they are isomorphic icon: dot topics: - { name: "Hash Table", slug: "hash-table" } - { name: "String", slug: "string" } issue: "https://github.com/prdlk/leetcode/issues/33" sidebar: label: 'Isomorphic Strings' badge: 'Easy' --- ### Example 1: - Input: `s = "egg", t = "add"` - Output: `true` - Explanation: The strings `s` and `t` can be made identical by: • Mapping 'e' to 'a'. • Mapping 'g' to 'd'. ### Example 2: - Input: `s = "f11", t = "b23"` - Output: `false` - Explanation: The strings `s` and `t` can not be made identical as `'1`' needs to be mapped to both `'2`' and `'3`'. ### Example 3: - Input: `s = "paper", t = "title"` - Output: `true` ### Constraints: - `1 <= s.length <= 5 * 10^4` - `t.length == s.length` - `s` and `t` consist of any valid ascii character. ## Solution ```py class Solution: def isIsomorphic(self, s: str, t: str) -> bool: N = len(t) seen = {} for i in range(N): c1, c2 = s[i], t[i] if c1 in seen and seen[c1] != c2: return False elif c1 in seen and seen[c1] == c2: continue else: seen[c1] = c2 return len(set(s)) == len(set(t)) ```