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
Example 2:Input: s = “foo”, t = “bar” Output: false
Example 3:Input: s = “paper”, t = “title” Output: true
Constraints:
1 <= s.length <= 5 * 104
t.length == s.length
s
andt
consist of any valid ascii character.
The trick is in the last sentence…
No two characters may map to the same character, but a character may map to itself.
Therefore, it’s needed to double check that no two characters are mapped to the same character.
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
match_dict = {}
check_dict = {}
for s_c, t_c in zip(s, t):
mapping = match_dict.get(s_c)
if mapping is None:
if check_dict.get(t_c) is not None and check_dict.get(t_c) != s_c:
return False
match_dict[s_c] = t_c
check_dict[t_c] = s_c
elif mapping != t_c:
return False
return True
搶先發佈留言