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