diff --git a/apps/docs/content/(01-linear-structures)/hash-table/205-isomorphic-strings.mdx b/apps/docs/content/(01-linear-structures)/hash-table/205-isomorphic-strings.mdx new file mode 100644 index 0000000..7879b52 --- /dev/null +++ b/apps/docs/content/(01-linear-structures)/hash-table/205-isomorphic-strings.mdx @@ -0,0 +1,52 @@ +--- +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)) +``` diff --git a/apps/docs/content/appendix/(1-data-structures)/string.mdx b/apps/docs/content/appendix/(1-data-structures)/string.mdx index a0ce9f0..6568310 100644 --- a/apps/docs/content/appendix/(1-data-structures)/string.mdx +++ b/apps/docs/content/appendix/(1-data-structures)/string.mdx @@ -3,7 +3,7 @@ title: "String" list: "https://leetcode.com/problem-list/string/" icon: quote sidebar: - badge: '16' + badge: '17' --- :::note