205. 同构字符串

内容

给定两个字符串 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;
};

回到目录

你可能感兴趣的:(205. 同构字符串)