0205. Isomorphic Strings

# 205. Isomorphic Strings#

## 题目 #

Given two strings s and t, determine if they are isomorphic.

Two strings 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

``````

Note:

You may assume both s and t have the same length.

## 代码 #

``````
package leetcode

func isIsomorphic(s string, t string) bool {
strList := []byte(t)
patternByte := []byte(s)
if (s == "" && t != "") || (len(patternByte) != len(strList)) {
return false
}

pMap := map[byte]byte{}
sMap := map[byte]byte{}
for index, b := range patternByte {
if _, ok := pMap[b]; !ok {
if _, ok = sMap[strList[index]]; !ok {
pMap[b] = strList[index]
sMap[strList[index]] = b
} else {
if sMap[strList[index]] != b {
return false
}
}
} else {
if pMap[b] != strList[index] {
return false
}
}
}
return true
}

``````

Apr 8, 2023