leetcode刷题日记:205. Isomorphic Strings(同构字符串)

205. Isomorphic Strings判断是否为同构字符串Python 给定两个字符串s和t,确定它们是否同构。如果可以替换s中的字符以获得t,则两个字符串是同构的。在保留字符顺序的同时,必须将所有出现的字符替换为另一个字符。没有两个字符可以映射到同一字符,但是一个字符可以映射到自身。 给定s和t的长度相同 Input: s='again' t='paper' Output: True Input: s='trump' t='idiot' Output: False Clue: 如果s和t是同构的,那就可以用s中的字符映射t, 例如s='again' t='pape 阅读详情

205. Isomorphic Strings(同构字符串)

对于同构字符串来说也就是对于字符串s与字符串t,对于s[i]s[i]s[i]可以映射到t[i]t[i]t[i],同时对于任意s[k]=s[i]s[k]=s[i]s[k]=s[i]都有s[k]s[k]s[k]映射到t[k]t[k]t[k],则t[k]=t[i]t[k]=t[i]t[k]=t[i]则说明这是一个同构字符串。
我们已经明白了映射规则,接下来我们就具体来分析下如何判断是否为同构字符串。
在ASCII码对照表中一共有128个字符,也就是说对于题目给出的字符串我们可以确定它们是这128个字符中的字符组成的,每个字符都有两种表示一种是ASCII码,一种是字符本身。
我们就可以创建一个大小为128的char类型数组f,用ASCII码xxx作为下标,表示s中所有ASCII码为xxx的元素f[x]f[x]f[x]映射为t中的对应位置的元素。
映射如图所示:
在这里插入图片描述
之后每一次添加映射都要对应的映射f[s[i]]是否已经存在,如果存在是否与当前要添加的映射是否相同,如果相同则没事,不相同就说明存在一个映射到多个元素,那就不符合同构字符串的定义了。
之后我们还需要检查一下是否存在多个元素映射到同一个元素的情况存在,因为上述添加的过程在建立映射后只能保证不存在一个映射到多个的情形,但是没法避免多个元素到一个元素的情形,所以我们需要进行额外的检查。

总结

根据字符的两种表现形式我们可以建立数组描述映射。我们可以发现在遍历字符串s与t,将对应位置的元素映射关系逐一加入到f数组中,在加入的过程中如果发现映射已存在,但是映射的元素不相同,说明这两个不是同构字符串,我们返回false,一直到结束,如果s中所有元素都与t中对应位置的元素建立了映射,则我们需要检查是否存在多个s中的不同字符映射到了t中的同一个字符上,如果存在返回false,否则返回true。
至此程序结束。

bool isIsomorphic(char* s, char* t) {
    int length1 = strlen(s);
    int length2 = strlen(t);
    char * f = (char *)malloc(sizeof(char)*128);
    for(int i = 0; i < 128; i++){
        f[i] = 0;
    }
    if(length1==length2){
        for(int i = 0; i < length1; i++){
            if(f[s[i]]==0){
                f[s[i]] = t[i];
            }else if(f[s[i]]!=t[i]){
                return 0;
            }
        }
        for(int i = 0; i < 128; i++){
            for(int j = 0; j < i; j++){
                if(f[i]==f[j]&&f[i]!=0){
                    return 0;
                }
            }
        }
        return 1;
    }
    return 0;
}

运行结果截图:
在这里插入图片描述

字符串能否“同构”?——把 Isomorphic Strings 玩明白(带代码与实战思路) 本文探讨了判断字符串同构(Isomorphic Strings)的算法问题。核心要点包括:1) 同构字符串要求字符之间存在一对一的双向映射关系;2) 提出两种主要解法:双向哈希映射法和模式签名编码法;3) 强调常见陷阱如长度检查、双向验证和字符集处理;4) 介绍拓展应用场景如字符串分组和模式匹配。文章通过Python代码示例展示了实现细节,并指出该问题训练的关键是抽象思维和模式识别能力,这种思维在算法学习和实际工程中具有重要意义。 阅读详情

相关推荐

保姆级教程:手把手教你为STM32F407和W25Q128制作Keil MDK的SPI Flash下载算法(FLM文件)

本文提供了一份详细的教程,指导开发者如何为STM32F407和W25Q128制作Keil MDK的SPI Flash下载算法(FLM文件)。从理解下载算法的核心机制到实现FlashPrg.c的核心操作,再到链接脚本与地址映射实战,手把手教你完成定制化SPI Flash下载算法的开发与优化。

weixin_28716769的博客 409

Isomorphic Strings(同构字符串)

题目描述 Given two strings s and t, determine if they are isomorphic. Two strings are isomor- phic if the characters in s can be replaced to get t. For example,”egg” and “add” are isomorphic, “foo”

发条毛虫 781

STM32的GPS数据提取程序设计说明——基于NMEA0183协议

一、硬软件平台 本次程序实现效果为对GPS信号穿送来的数据进行筛选,并将筛选后的信息通过上位机显示出来,所以此次设计所需硬件包括STM32F407、RS232转TTL、CH340USB转串口模块,注意该模块在使用前,对应的系统需要安装驱动,否则串口调试助手无法识别,另外还包括JLink下载器。 本次代码设计软件为KEIL5并结合F4固件包,上位机系统为WIN7,主机系统为WIN10。 二、算法总体思路设计 由于GPS通过RS232将数据传送给板子,因此使用两个串口资源(串口1和串口2),其中一个用来

小景的博客 6182

leetcode之Isomorphic strings

问题来源:Isomorphic strings 问题描述:给定两个字符串,判断它俩是否满足同构关系。同构关系表示两个字符串的字符能一一对应,例如title和paper构成同构关系,而foo和bar不构成同构关系。 该问题属于一个比较简单的题目,利用两个map分别对每个字符串的字符建立映射关系即可判断两个字符串是否满足同构关系(注意:必须要用两个map,可以利用ab和aa来理解)。该问题的有趣之处在于它有多种解决思路,而且相比原始思路会使代码更加简洁。 解法一 如果给定字符串的每个字符都是ASCII码(事实也

姚光超的专栏 304

手把手教你用Python实现ITRS与GCRS坐标转换(附完整代码)

本文详细介绍了如何使用Python的Astropy库实现ITRS与GCRS坐标转换。文章从环境配置、坐标对象构建入手,深入解析了transform_to方法背后的转换矩阵与地球定向参数管理,并通过卫星地面轨迹计算实战案例,帮助开发者掌握高精度空间坐标转换的核心技术与工程实践。

weixin_28335283的博客 82

MATLAB 2022b 用户专属:保姆级IPOPT求解器安装配置全流程(含OPTI工具箱)

本文为MATLAB 2022b用户提供IPOPT求解器的详细安装与配置指南,涵盖OPTI工具箱的适配安装、环境变量设置及常见问题解决方案。通过实战案例演示非线性优化问题的求解过程,帮助用户高效部署这一强大的优化工具,提升工程计算效率。

weixin_29092031的博客 408

205. Isomorphic Strings

205. 同构字符串 给定两个字符串s和t,判断它们是否是同构的。 如果s中的字符可以被替换得到t,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。 示例 1: 输入: s = "egg", t = "add" 输出: true 示例 2: 输入: s =...

GGGGITFKBJG的主页 238

(十二)深入理解蓝牙BLE之“移植Bluez 5.18源码到嵌入式平台”

在某嵌入式平台进行蓝牙开发,发现上面居然没有btmon,hciattach,hcitool等蓝牙调试工具,无奈之下,只好移植bluez协议栈到目标嵌入式平台,建议移植5.18版本(最新的5.54版本居然hcitool等工具不是默认编译的,需要修改Makefile才可以)。 看到很多讲解移植过程的文章都是需要积分的,觉得写一篇免积分的文章还是有些意义的,欢迎同行来交流。 移植环境:Linux ubuntu 目标平台:sigmastar 星宸科技 配置交叉编译工具链:export PATH=$PATH:

2966

同构字符串(Isomorphic Strings)

一、学习要点: 1.构造两个哈希表; 2.由于为字符串,每个哈希表的长度为256; 3.字符串的字符比较则为哈希值的比较;如果出现之前构造过哈希值的字符,则取出哈希值比较即可,同一映射的哈希值相同;不为同一映射,哈希值则不相同; 二、代码实现: #include<stdlib.h> #include<stdio.h> #include<string> using...

爱编程的小屁孩的博客 641

腾讯Android高级开发工程师面试指南与参考答案

腾讯深圳元宝高级Android开发工程师岗位招聘,要求3-5年Android开发经验,熟悉Kotlin、性能优化和架构设计。岗位职责包括元宝App架构研发、稳定性优化及跨团队协作。面试分3轮,流程较快,主要考察技术能力(Kotlin、算法)、架构设计及项目经验。重点准备性能优化案例、多线程编程及Compose开发等加分项。无AI项目经验也可应聘,需突出Android开发能力。建议复习MVVM架构、JNI等技术,并准备项目优化案例。

郑伟强dev的专栏 1647

从零开始学习PX4源码0(固件下载及编译)

本节主要记录从零开始学习PX4源码1(固件下载)的过程,欢迎批评指正!!!下载固件主要分为两个版本,之前稳定版本和最新官网发布版本,为什么要下载两个版本,主要是说明两个版本有一定的差异(开发环境及源码文件格式等),我们是从之前版本开始学习,为什么不从最新的?因为之前版本代码文件格式还是固定的,最新的变化很大,不利于初学者学习,apm和px4不好的地方就是之前版本v1.7.2和最新版本v1.14.0有些文件总是在变化,这样很不好。

陌城烟雨 4617

Isomorphic Strings

题目: 1、s中同一个字符要映射到t中的同一个字符; 2、s中通一个字符不能映射到t中的同一个字符——》t中的同一个字符要映射到s中的同一个字符 so需要s到t判断一下,t到s再判断一下; public class Solution { public boolean isIsomorphic(String s, String t) { if (s.length()

u011860731的专栏 374

Qt —— 在Win11下“Qt for Android“开发环境,通过USB在真机(华为Meta60 PRO)上调试运行,并打包APK并在真实手机运行

Qt —— 在Win11下“Qt for Android“开发环境,打包APK并在真实手机运行

315

205. Isomorphic Strings(字符串同构)

Given two stringssandt, determine if they are isomorphic. Two strings are isomorphic if the characters inscan be replaced to gett. All occurrences of a character must be replaced with another ...

weixin_33834628的博客 148

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Leetcode 205题:Isomorphic Strings

题目描述 给定两个字符串,检查它们是否是结构相似的。 对于结构相似的定义如下 Two strings s and t 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 m

weixin_44607838的博客 300

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

算法:同构字符串205. Isomorphic Strings

LeetCode全集请参考:LeetCode Github 大全 题目 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 anothe

AI架构师易筋 415

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java/205. Isomorphic String 同构字符串

题目       代码部分一(5ms,96.64%) class Solution { public boolean isIsomorphic(String s, String t) { int[] map1 = new int[1000]; int[] map2 = new int[1000]; int...

qq_38959715的博客 686

关于LeetCode中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 wit

zsy112371的专栏 1627

638. Isomorphic Strings

描述给定两个字符串 s 和 t ,确定它们是否是同构的。两个字符串是同构的如果 s 中的字符可以被替换得到 t。所有出现的字符必须用另一个字符代替,同时保留字符串的顺序。 没有两个字符可以映射到同一个字符,但一个字符可以映射到自己。你可以假定两个字符串 s 和 t 是一样长度的.您在真实的面试中是否遇到过这个题?  是样例给出 s = "egg", t= "add", 返回 true。给出 s =...

vestlee的博客 218

Isomorphic String

Given two stringssandt, determine if they are isomorphic. Two strings are isomorphic if the characters inscan be replaced to gett. All occurrences of a character must be replaced with ano...

weixin_30455365的博客 163
上一篇: leetcode刷题日记:202. Happy Number( 快乐数)和203. Remove Linked List Elements(移除链表元素)
下一篇: leetcode刷题日记:217. Contains Duplicate(存在重复元素)和219. Contains Duplicate II(存在重复元素 II)
apprentice_eye
博客等级 码龄6年 1165粉丝 348原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值