# Links

Go to the solution

Go to the question on LeetCode

# My Thoughts

**What Went Well**

I knew to use a different map for each string, but not in such a unique way.

**What Went Wrong**

I did not fully understand the constraints resulting in an incorrect approach to the problem.

**How I Can Improve**

I further analyze the constraints to ensure a proper understanding of the problem before approaching it.

# Data Structure Description

**Hash Map (Dictionary) -** A data structure that stores a collection of keys, each to their respective values. Each key may only appear once.

# Solution Statistics

**Time Complexity**

O(n) - We are iterating through both strings simultaneously, and each string’s length is equal to n, resulting in the O(n) time complexity.

**Space Complexity**

O(n) - In the worst case, we store all n elements of both strings, resulting in an O(2 * n) space complexity. Since we ignore constant multiples of n, we reduce the space complexity to O(n).

**Runtime Beats**

99.98% of other submissions

**Memory Beats**

99.99% of other sumbissions

# Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
Ds = {}
Dt = {}
for i in range(len(s)):
# If the current character of s and t is not in either dictionary
if s[i] not in Ds and t[i] not in Dt:
# Map the current character to the other string's current character
Ds[s[i]] = t[i]
Dt[t[i]] = s[i]
# Check if the current character is not equal to the
# one mapped in the opposite strings dictionary.
# If one condition returns false, then the constraint is broken
elif s[i] != Dt.get(t[i]) and t[i] != Ds.get(s[i]):
return False
return True