【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;
    }
};
相关推荐
甄心爱学习14 分钟前
数据挖掘-聚类方法
人工智能·算法·机器学习
星释39 分钟前
Rust 练习册 82:Hamming与字符串处理
开发语言·算法·rust
vir021 小时前
P12155 [蓝桥杯 2025 省 Java B] 消失的蓝宝
java·职场和发展·蓝桥杯
小张成长计划..2 小时前
【C++】16:模板进阶
c++·算法
AndrewHZ2 小时前
【图像处理基石】如何使用大模型进行图像处理工作?
图像处理·人工智能·深度学习·算法·llm·stablediffusion·可控性
AndrewHZ2 小时前
【图像处理基石】图像处理的基础理论体系介绍
图像处理·人工智能·算法·计算机视觉·cv·理论体系
稚辉君.MCA_P8_Java3 小时前
Gemini永久会员 Java实现的暴力递归版本
java·数据结构·算法
冯诺依曼的锦鲤4 小时前
算法练习:差分
c++·学习·算法
有意义4 小时前
栈数据结构全解析:从实现原理到 LeetCode 实战
javascript·算法·编程语言
鹿鹿鹿鹿isNotDefined4 小时前
逐步手写,实现符合 Promise A+ 规范的 Promise
前端·javascript·算法