Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

同构字符串 #31

Open
Mooo-star opened this issue Sep 19, 2024 · 1 comment
Open

同构字符串 #31

Mooo-star opened this issue Sep 19, 2024 · 1 comment
Labels

Comments

@Mooo-star
Copy link
Owner

给定两个字符串 s 和 t ,判断它们是否是同构的。

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

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

示例 1:

输入:s = "egg", t = "add"
输出:true
示例 2:

输入:s = "foo", t = "bar"
输出:false
示例 3:

输入:s = "paper", t = "title"
输出:true

@Mooo-star Mooo-star added 算法 记录算法 哈希表 labels Sep 19, 2024
@Mooo-star
Copy link
Owner Author

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isIsomorphic = function (s, t) {
    // 定义两个映射表
    const s2t = {};
    const t2s = {};
    const len = s.length;
    for (let i = 0; i < len; ++i) {

        // 得到每次遍历的数据
        const x = s[i], y = t[i];

        // 判断 hash 表中的数据映射是否正确
        // 映射不对直接 return false
        if ((s2t[x] && s2t[x] !== y) || (t2s[y] && t2s[y] !== x)) {
            return false;
        }

        // 映射正确 / 不存在当前的映射,定义映射关系
        s2t[x] = y;
        t2s[y] = x;

    }
    return true;
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant