当前位置: 首页 > news >正文

leetcode 205. Isomorphic Strings

题目

Given two strings s and t, determine if they are isomorphic.

Two strings are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.

For example,
Given “egg”, “add”, return true.

Given “foo”, “bar”, return false.

Given “paper”, “title”, return true.

理解

判断两个字符串是否是同分异构,也就是判断两个字符串里面的字符是不是一一对应。

解决

两个map

正向保证不会一个key对应两个value,反向保证不会两个key对应同一个value

public class Solution {
    public boolean isIsomorphic(String s, String t) {
        if(s==null && t==null){
            return true;
        }else if(s==null || t==null){
            return false;
        }
        if(s.length() != t.length()){
            return false;
        }
        int N = s.length();
        Map<Character,Character> map = new HashMap<Character,Character>();
        Map<Character,Character> reservedMap = new HashMap<Character,Character>();
        for(int i=0; i<N; i++){
            if(map.containsKey(s.charAt(i))){
                if(map.get(s.charAt(i))!=t.charAt(i)){
                    return false;
                }
            }else{
                map.put(s.charAt(i),t.charAt(i));
            }
            if(reservedMap.containsKey(t.charAt(i))){
                if(reservedMap.get(t.charAt(i))!=s.charAt(i)){
                    return false;
                }
            }else{
                reservedMap.put(t.charAt(i),s.charAt(i));
            }
        }
        return true;
    }
}

一个map,一个set

map保证不会一个key对应两个value,set保证不会两个key对应同一个value

public class Solution {
    public boolean isIsomorphic(String s, String t) {
        if(s==null && t==null){
            return true;
        }else if(s==null || t==null){
            return false;
        }
        if(s.length() != t.length()){
            return false;
        }
        int N = s.length();
        Map<Character,Character> map = new HashMap<Character,Character>();
        Set<Character> set = new HashSet<Character>();
        for(int i=0; i<N; i++){
            if(map.containsKey(s.charAt(i))){
                if(map.get(s.charAt(i))!=t.charAt(i)){
                    return false;
                }
            }else if(set.contains(t.charAt(i))){
                return false;
            }else{
                map.put(s.charAt(i),t.charAt(i));
                set.add(t.charAt(i));
            }
        }
        return true;
    }
}

相关文章:

  • node的安装
  • Sqlserver2008相关配置问题
  • node 模块简述--内置fs http ---自定义模块
  • ppt 制作海报 导出高分辨率图片
  • 数组常见的方法
  • 数据结构-C语言递归实现树的前中后序遍历
  • 核心动画(Core Animation)
  • url模块 和 querystring模块
  • APP开发的一些简单流程思路
  • querystring 查询字符串模块
  • 查看数据库表的数据量和SIZE大小的脚本修正
  • commonJS模块化
  • HDU4185 Oil Skimming(匈牙利)
  • yarn 和 bower的使用
  • phpcms 绑定域名
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • chrome扩展demo1-小时钟
  • JavaWeb(学习笔记二)
  • js
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • linux学习笔记
  • miaov-React 最佳入门
  • nginx 配置多 域名 + 多 https
  • React-Native - 收藏集 - 掘金
  • STAR法则
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 思否第一天
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #考研#计算机文化知识1(局域网及网络互联)
  • (2)(2.10) LTM telemetry
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (4) PIVOT 和 UPIVOT 的使用
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (接口自动化)Python3操作MySQL数据库
  • (六)Hibernate的二级缓存
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (小白学Java)Java简介和基本配置
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)编辑寄语:因为爱心,所以美丽
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 成都线下面基会拉开序幕
  • .net refrector
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net程序集学习心得
  • .net项目IIS、VS 附加进程调试
  • .Net中间语言BeforeFieldInit
  • @RunWith注解作用
  • @我的前任是个极品 微博分析