【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;
    }
};
相关推荐
OC溥哥9995 小时前
Paper MinecraftV3.0重大更新(下界更新)我的世界C++2D版本隆重推出,拷贝即玩!
java·c++·算法
Jayden_Ruan5 小时前
C++蛇形方阵
开发语言·c++·算法
星火开发设计5 小时前
C++ map 全面解析与实战指南
java·数据结构·c++·学习·算法·map·知识
执笔论英雄5 小时前
【RL] advantages白化与 GRPO中 advantages均值,怎么变化,
算法·均值算法
2301_800895105 小时前
hh的蓝桥杯每日一题
算法·职场和发展·蓝桥杯
老鱼说AI6 小时前
现代计算机系统1.2:程序的生命周期从 C/C++ 到 Rust
c语言·c++·算法
仰泳的熊猫6 小时前
题目1099:校门外的树
数据结构·c++·算法·蓝桥杯
求梦8206 小时前
【力扣hot100题】反转链表(18)
算法·leetcode·职场和发展
NAGNIP6 小时前
机器学习特征工程中的特征选择
算法·面试
l1t6 小时前
DeepSeek辅助编写的利用位掩码填充唯一候选数方法求解数独SQL
数据库·sql·算法·postgresql