mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
---
|
|
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))
|
|
```
|