diff --git a/work/1/Easy/Hash Table/205.isomorphic-strings.py b/work/1/Easy/Hash Table/205.isomorphic-strings.py new file mode 100644 index 0000000..2e49398 --- /dev/null +++ b/work/1/Easy/Hash Table/205.isomorphic-strings.py @@ -0,0 +1,76 @@ +""" +205. Isomorphic Strings +Difficulty: Easy +https://leetcode.com/problems/isomorphic-strings/ + +────────────────────────────────────────────────── + +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 + +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. +""" + + +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))