写点什么

LeetCode 题解:205. 同构字符串,哈希表,JavaScript,详细注释

作者:Lee Chen
  • 2024-07-04
    福建
  • 本文字数:582 字

    阅读完需:约 2 分钟

原题链接:https://leetcode.cn/problems/isomorphic-strings/


理解题意:


  1. s = "foo"t = "bar"s中的o同时映射了ar,不正确

  2. s = "badc"t = "baba"t中的a同时映射了ac,不正确

  3. 因此需要同时检查stts的映射关系


解题思路:


  1. 用两个Map,分别存储s -> tt -> s的映射关系

  2. 遍历字符串,查看Map中存储的映射关系是否与遍历到的字符不同,出现不同就表示两个字符串不是同构的

  3. 如果正常退出循环,表示没意义找到不同的映射关系,两个字符串是同构的


/** * @param {string} s * @param {string} t * @return {boolean} */var isIsomorphic = function(s, t) {  const maps2t = new Map() // 存储s到t的映射关系  const mapt2s = new Map() // 存储t到s的映射关系
// 遍历每个字符,对比它们之间的映射关系 for (let i = 0; i < s.length; i++) { // 如果s[i]到t[i]的映射,以及t[i]到s[i]的映射出现不相同的情况 // 表示出现一个字符可以映射到两个不同字符,返回false if ( (maps2t.has(s[i]) && maps2t.get(s[i]) !== t[i]) || (mapt2s.has(t[i]) && mapt2s.get(t[i]) !== s[i]) ) { return false }
// 每次循环都存储一次映射关系 maps2t.set(s[i], t[i]) mapt2s.set(t[i], s[i]) }
// 如果没有找到错误的映射关系,正常退出循环,表示每个字符都能正常映射 return true};
复制代码


发布于: 刚刚阅读数: 4
用户头像

Lee Chen

关注

还未添加个人签名 2018-08-29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:205. 同构字符串,哈希表,JavaScript,详细注释_Lee Chen_InfoQ写作社区