【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;
    }
};
相关推荐
橘颂TA7 分钟前
【Linux】从 “抢资源” 到 “优雅控场”:Linux 互斥锁的原理与 C++ RAII 封装实战(Ⅰ)
linux·运维·服务器·c++·算法
我命由我1234510 分钟前
开发中的英语积累 P25:Axis、Stroke、Corner、Interceptor、Declared、Internal
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
YGGP22 分钟前
【Golang】LeetCode 19. 删除链表的倒数第 N 个节点
算法·leetcode·链表
池塘的蜗牛29 分钟前
mmse-based-OFDM-signal-processing(2)
算法
平生不喜凡桃李36 分钟前
Leetcode-240 :搜索二维矩阵
leetcode·矩阵·深度优先
Kris_LinSD38 分钟前
算法小实验——分治算法快速排序问题实验(含报告)
c语言·算法
Super小白&39 分钟前
十大经典排序算法详解(附C语言实现+复杂度分析)
c语言·算法·排序算法
Eloudy39 分钟前
Birkhoff 多胞形,双随机矩阵的几何世界
算法
2503_946971861 小时前
【SystemDesign/HA】2025年度高可用分布式仿真节点与预测模型容灾演练配置 (Disaster Recovery Config)
大数据·分布式·算法·系统架构·数据集
GrowingYi1 小时前
算法基础技术栈
数据结构·算法