【LeetCode】205. 同构字符串

205. 同构字符串(简单)



方法:哈希映射

思路

  • 判断两个字符串是不是同构字符串,只需要判断对应的字符是不是存在映射关系,我们可以使用 map 来保存字符间的映射关系。
  • 由于 "不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上",因此,我们既需要判断 s -> t 的映射是否符合要求,又需要判断 t -> s 的映射是否符合要求。 这里我们设置了两个 map ,分别保存两种映射关系。

代码

cpp 复制代码
class Solution {
public:
    bool isIsomorphic(string s, string t) {
        if(s.size() != t.size()) return false; 
        unordered_map<char, char> ascii_s, ascii_t;
        for(int i=0; i<s.size(); ++i){
            // 说明已经存在该字符
            if(ascii_s.find(s[i]) != ascii_s.end()){
                if(t[i] != ascii_s[s[i]]) return false;
            }
            // 不存在该字符
            else{
                ascii_s[s[i]] = t[i];
            }
            // 另外一个方向遍历
            if(ascii_t.find(t[i]) != ascii_t.end()){
                if(s[i] != ascii_t[t[i]]) return false;
            }
            else{
                ascii_t[t[i]] = s[i];
            }
        }
        return true;
    }
};
相关推荐
TracyCoder1233 分钟前
LeetCode Hot100(50/100)——153. 寻找旋转排序数组中的最小值
算法·leetcode·职场和发展
诸葛务农3 分钟前
点云配准在人形机器人中的应用:ICP算法(2)
人工智能·算法·机器学习·机器人
摘星编程9 分钟前
**解锁Agent智能体新纪元:自主协作、任务分解与人类意图对齐的终极指南**
算法
mmz12079 分钟前
逆序对问题(c++)
c++·算法
化学在逃硬闯CS10 分钟前
Leetcode110.平衡二叉树
数据结构·c++·算法·leetcode
谢铭轩12 分钟前
题解:P8035 [COCI 2015/2016 #7] Otpor
c++·算法
listhi52016 分钟前
双目立体视觉中的彩色SAD算法
算法
爱coding的橙子19 分钟前
Day87:2.12:leetcode 动态规划8道题,用时3h
算法·leetcode·动态规划
星火开发设计24 分钟前
虚析构函数:解决子类对象的内存泄漏
java·开发语言·前端·c++·学习·算法·知识
2501_9011478327 分钟前
幂函数实现的优化与工程思考笔记
笔记·算法·面试·职场和发展·php