内容
给定两个字符串 s 和 t,判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
示例 1:
输入: s = "egg", t = "add"
输出: true
示例 2:
输入: s = "foo", t = "bar"
输出: false
示例 3:
输入: s = "paper", t = "title"
输出: true
说明:
你可以假设 s 和 t 具有相同的长度。
思路
将s和t分别替换成以数字1开头的组合,
规则:遇到第一个陌生字符,用1表示,并记录到map中,以后再次遇到这个字符,直接用map中记录的值来表示
当s,t都被替换成这种组合后,比较是否相同即可
代码
/**
将s和t分别替换成以数字1开头的组合,
规则:遇到第一个陌生字符,用1表示,并记录到map中,以后再次遇到这个字符,直接用map中记录的值来表示
当s,t都被替换成这种组合后,比较是否相同即可
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isIsomorphic = function (s, t) {
var map = {};
var index = 1;
var result = '',
result2 = '';
for (var i of s) {
map[i] ? null : (map[i] = index, index++);
result += map[i]
}
map = {};
index = 1;
for (var i of t) {
map[i] ? null : (map[i] = index, index++);
result2 += map[i]
}
return result == result2;
};