# [leetcode] 205. Isomorphic Strings _ Algorithm Problem Solve for python

## 1. Problem

205. 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.

## 2. Solution

### 2.1. Using dictionary

I solve this problem like this. I added key and value of dictionary.

class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
dic = {}
for _s, _t in zip(s, t):
dic[_s] = _t

for _s, _t in zip(s, t):
if dic[_s] != _t:
return False

dic = {}
for _s, _t in zip(s, t):
dic[_t] = _s

for _s, _t in zip(s, t):
if dic[_t] != _s:
return False

return True


### 2.2. Using index

I confirmed other user’s solution.

He solved this problem like under code.

• Check the character is in string and add index in list.
• Check two index list value is same.
# Time Complexity : O(n)
class Solution(object):
def isIsomorphic(self, s, t):
map1 = []
map2 = []
for idx in s:
map1.append(s.index(idx))
for idx in t:
map2.append(t.index(idx))
if map1 == map2:
return True
return False


This solution can be shorten like under code.

class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
return [*map(s.index, s)] == [*map(t.index, t)]