Files
leetcode/work/1/Easy/Hash Table/205.isomorphic-strings.py
T

77 lines
1.5 KiB
Python

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