---
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))
```
