同构字符串
Tips
题目
给定两个字符串 s
和 t
, 判断它们是否是同构的.
如果 s
中的 字符可以按某种映射关系替换得到 t
, 那么这两个字符串是同构的.
每个出现的字符都应当映射到另一个字符, 同时不改变字符的顺序. 不同字符不能映射到同一个字符上, 相同字符只能映射到同一个字符上, 字符可以映射到自己本身.
提示:
1 <= s.length <= 5 * 10⁴
t.length == s.length
s
和t
由任意有效的 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
}