LeetCode 205 同构字符串

题目

给定两个字符串 st ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

复制代码
输入:s = "egg", t = "add"
输出:true

示例 2:

复制代码
输入:s = "foo", t = "bar"
输出:false

示例 3:

复制代码
输入:s = "paper", t = "title"
输出:true

提示:

  • 1 <= s.length <= 5 * 104
  • t.length == s.length
  • st 由任意有效的 ASCII 字符组成

题目解析

同构字符串意思就是字符串1中的每个字符都唯一映射字符串b中的一个字符

比如 a---->d,c----->e,这个对应关系是双向的,即1中字符a--->d,那么2中字符d也一定是对应的a

不能有这种场景如a--->d;c----->d;

思路

可以使用一个map来存储对应关系,键为字符串1的当前字符,值为字符串2的当前字符

如果遇到map中已经有了该key,那么就需要取出来value,判断value是否与字符串2的当前值一样,一样说明是对应的,不一样说明不对应,直接返回false

例如 abb ,cdf ,

但是这种情况忽略了一种情况

badc,babe,因为b已经对应了b,那么d就不能再对应b

代码

java 复制代码
class Solution {
    public boolean isIsomorphic(String s, String t) {
        int a = s.length();
        int b=t.length();
        //长度不等,直接返回false
        if(a!=b){
            return false;
        }
        //定义两个map存储对应关系
        HashMap<Character,Character> map = new HashMap<>();
        HashMap<Character,Character> map1 = new HashMap<>();
        for(int i=0;i<a;i++){
            char c = s.charAt(i);
            char d = t.charAt(i);
            //如果map已经存在了key c,那么要取出值然后判断对应值是否与d相等
            if(map.containsKey(c)){
                char e = map.get(c);
//不相等说明映射错误
               if(d!=e){
                return false;
               }
              //判断map1中已经存在了d,取出值f与c对比,看是否相等
            }else if(map1.containsKey(d)){
                char f = map1.get(d);
//不相等说明有误
                if(f!=c){
                return false;
               }
            }else{
//map中都不包括该key,存入map
                map.put(c,d);
                map1.put(d,c);
            }
        }
        return true;

    }
}
相关推荐
NAGNIP16 小时前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
美团技术团队17 小时前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
Fanxt_Ja21 小时前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下21 小时前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶1 天前
算法 --- 字符串
算法
博笙困了1 天前
AcWing学习——差分
c++·算法
NAGNIP1 天前
认识 Unsloth 框架:大模型高效微调的利器
算法
NAGNIP1 天前
大模型微调框架之LLaMA Factory
算法
echoarts1 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Python技术极客1 天前
一款超好用的 Python 交互式可视化工具,强烈推荐~
算法