Skip to content
On this page

205. 同构字符串

原题链接:LeetCode 205. 同构字符串

题目描述

给定两个字符串 st ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = "egg", t = "add"

输出:true

  • 解释: 字符串 st 可以通过以下方式变得相同:

  • 'e' 映射为 'a'

  • 'g' 映射为 'd'

示例 2:

输入:s = "f11", t = "b23"

输出:false

  • 解释: 字符串 st 无法变得相同,因为 '1' 需要同时映射到 '2''3'

示例 3:

输入:s = "paper", t = "title"

输出:true

提示:

  • 1 <= s.length <= 5 * 104

  • t.length == s.length

  • st 由任意有效的 ASCII 字符组成

难度: Easy


题解代码

javascript
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isIsomorphic = function(s, t) {
  const s2t = {}, t2s = {}
  for (let i = 0; i < s.length; i++) {
    const X = s[i], Y = t[i]
    if ((s2t[X] && s2t[X] !== Y) || (t2s[Y] && t2s[Y] !== X)) {
      return false
    }
    s2t[X] = Y
    t2s[Y] = X
  }
  return true
};

技术文档集合