037 · Isomorphic Strings

algorithm
Published

June 15, 2026

Problem

给定两个字符串 st

请判断:st 是否是同构字符串。

“同构”的意思是:可以把 s 中的每个字符替换成另一个字符,从而得到 t

替换时需要满足两个条件:

  • 同一个字符每次都必须替换成同一个字符
  • 不同字符不能替换成同一个字符

字符可以替换成自己。

例如:

s = "egg"
t = "add"

s 里的 "e" 可以替换成 "a""g" 可以替换成 "d"

这样 "egg" 就能变成 "add",所以答案是:

true

再比如:

s = "foo"
t = "bar"

s 里的两个 "o" 必须替换成同一个字符,但在 t 中对应的位置分别是 "a""r",不一致,所以答案是:

false

Examples

示例 1

Input:  s = "egg", t = "add"
Output: true

解释:可以把 "e" 替换成 "a",把 "g" 替换成 "d"

示例 2

Input:  s = "foo", t = "bar"
Output: false

解释:两个 "o" 应该对应同一个字符,但它们分别对应了 "a""r"

示例 3

Input:  s = "paper", t = "title"
Output: true

解释:"p" 对应 "t""a" 对应 "i""e" 对应 "l""r" 对应 "e",每个对应关系都保持一致。

Constraints

  • \(1 \leq\) s.length \(\leq 5 * 10^4\)
  • t.length == s.length
  • st 可以包含任意有效的 ASCII 字符