mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
feat(work): add Isomorphic Strings solution
This commit is contained in:
1 parent
24ef28d8b1
commit
fdd54e4a1c
1 file changed
+76
@@ -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))
|
||||
Reference in new issue
Block a user