0205. Isomorphic Strings

205. Isomorphic Strings #

Problem #

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.

Problem Summary #

This problem is basically the same as Problem 290. Problem 290 is pattern matching, while the meaning of this problem is string mapping; essentially they are the same.

Given an initial string, determine whether the initial string can be mapped to the target string through character mapping. If it can be mapped, output true; otherwise, output false.

Solution Approach #

The approach to this problem is basically the same as Problem 290.

Code #


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
}


Calendar Jun 25, 2026
Edit Edit this page
Total visits:   You are visitor No.
中文