205. 同构字符串
js
;(function () {
/**
* 205. 同构字符串
* 给定两个字符串 s 和 t ,判断它们是否是同构的。
* 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
* 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。
* 不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
*
* 输入:s = "egg", t = "add"
* 输出:true
*
* 输入:s = "foo", t = "bar"
* 输出:false
*
* 输入:s = "paper", t = "title"
* 输出:true
*
*/
function isIsomorphic(s: string, t: string): boolean {
// 方法一:(官网提供)
type objType = {
[prop: string]: string
}
const s2t: objType = {}
const t2s: objType = {}
const len = s.length
for (let i = 0; i < len; ++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
}
let s = 'egg',
t = 'add'
console.log(isIsomorphic(s, t))
})()