Skip to main content

同构字符串

Tips

题目类型: HashMap

相关题目:

题目

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

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

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

提示:
  • 1 <= s.length <= 5 * 10⁴
  • t.length == s.length
  • st 由任意有效的 ASCII 字符组成
示例
输入: s = "egg", t = "add"
输出: true
输入: s = "foo", t = "bar"
输出: false
输入: s = "paper", t = "title"
输出: true

题解

/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isIsomorphic = function (s, t) {
const s2T = {}
const t2S = {}

for (let i = 0; i < s.length; i++) {
if (s2T[s[i]] && s2T[s[i]] !== t[i]) return false
if (t2S[t[i]] && t2S[t[i]] !== s[i]) return false

s2T[s[i]] = t[i]
t2S[t[i]] = s[i]
}

return true
}