leetcode刷题日记:205. Isomorphic Strings(同构字符串)
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码 x x x作为下标,表示s中所有ASCII码为 x x x的元素 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;
}
运行结果截图:

相关文章:
leetcode刷题日记:205. Isomorphic Strings(同构字符串)
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 …...
Autox.js和Auto.js4.1.1手机编辑器不好用我自己写了一个编辑器
功能有 撤销 重做 格式化 跳转关键词 下面展示一些 内联代码片。 "ui"; ui.layout( <drawer id"drawer"><vertical><appbar><toolbar id"toolbar"title""h"20"/></appbar><horizontal b…...
docker logs 如何使用grep检索
无法使用docker logs <container> | grep xxx 这是因为管道仅对stdout有效,如果容器将日志记录到stderr,这种情况就会发生,这时可以尝试这样写 docker logs <container id> 2>&1 | grep xxx...
【教3妹学编辑-mysql】详解join(内连接、外连接、交叉连接等)
内连接、外连接、交叉连接、笛卡尔积 内连接(inner join):取得两张表中满足存在连接匹配关系的记录。外连接(outer join):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足 匹配关系的记录。交叉连接(cross join):显示两张表所有记录一…...
云工作流 CloudFlow 重磅发布,流程式开发让云上应用构建更简单
云布道师 为了让企业和开发者更快速、便捷地进行云上开发,阿里云重磅发布云工作流(CloudFlow),它是一款强大的面向开发者的流程编排开发工具,全托管、高并发、高可用,帮助用户简化和自动化复杂的云上业务流…...
基于单片机GPS轨迹定位和里程统计系统
**单片机设计介绍, 基于单片机GPS轨迹定位和里程统计系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 一个基于单片机、GPS和里程计的轨迹定位和里程统计系统可以被设计成能够在移动的交通工具中精确定位车辆的位置…...
go 适配器模式
适配器模式用于转换一种接口适配另一种接口。 实际使用中Adaptee一般为接口,并且使用工厂函数生成实例。 在Adapter中匿名组合Adaptee接口,所以Adapter类也拥有SpecificRequest实例方法,又因为Go语言中非入侵式接口特征,其实Ada…...
蓝桥杯物联网_STM32L071_1_CubMxkeil5基础配置
CubMx配置: project工程中添加.h和.c文件: keil5配置: 运行: 代码提示与解决中文乱码:...
如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除
想把项目的前后台代码放到同一个git仓库管理,由于未设置.gitignore,就使用vscode做stage操作(相当于git add . 命令 其中【.】点表示全部文件),观察将要入库的文件发现,node_modules、target、.idea、log等…...
枚举 小蓝的漆房
题目 思路 核心思想是枚举 首先利用set记录每一种颜色 然后依次从set取出一种颜色作为targetColor,遍历房子 如果当前房子的颜色和targetColor不相同,就以当前房子为起点,往后长度为k的区间都涂成targetColor,并且需要的天数递增…...
【设计模式】行为型设计模式
行为型设计模式 文章目录 行为型设计模式一、概述二、责任链模式(Chain of Responsibility Pattern)三、命令模式(Command Pattern)四、解释器模式(Interpreter Pattern)五、迭代器模式(Iterato…...
Docker部署FLASK Unicorn并配置Nginx
1. 安装相关依赖 flask3.0.0 pymysql1.1.0 #我自己需要的 flask_cors4.0.0 gunicorn21.2.0 gevent23.9.12. 配置Gunicorn 新建gunicorn.conf.py bind 0.0.0.0:5418 # 绑定的IP地址和端口 workers 8 # 同时执行的进程数,推荐为当前CPU个数*21 worker_class&qu…...
pytorch的backward()的底层实现逻辑
自动微分是一种计算张量(tensors)的梯度(gradients)的技术,它在深度学习中非常有用。自动微分的基本思想是: 自动微分会记录数据(张量)和所有执行的操作(以及产生的新张…...
SqlServer_idea连接问题
问题描述: sqlServer安装之后可以使用navicat进行连接idea使用账户密码进行登录连接失败 问题解决: 先使用sqlServer管理工具进行登录 使用window认证连接修改账户密码 启用该登录名 这时idea还是无法连接,还需要如下配置 打开sqlserve…...
认识.NET Aspire:高效构建云原生应用的利器
简介 在几天前的.NET 8发布会上,来自微软的Glenn Condron和David Fowler为我们演示了.NET Aspire,在Visual Studio的帮助下,它展现出了惊人的开发效率。 短短的十分钟内,David现场演示了如何轻松创建了一个具有服务发现…...
CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
【导师不教?我来教!】同济计算机博士半小时就教会了我五大深度神经网络,CNN/RNN/GAN/transformer/LSTM一次学会,简直不要太强!_哔哩哔哩_bilibili了解的五大神经网络,整理笔记如下: 视频是唐宇…...
【CSH 入门基础 8 -- csh 中 set 与 setenv 的区别 】
文章目录 set 命令setenv 命令区别设置系统路径变量PATH添加单个路径设置多个路径 举例例子:编辑 .cshrc 文件 设置文件路径设置和使用局部变量永久设置变量 在 csh(C shell)和它的变体 tcsh(增强型 C shell)中&#x…...
Vue 2.0的源码构建
Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下。 1. 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.json 文件,它是对项目的描述文件,它的内容实际上是一个标准的 JSON 对象。 我们通常会配置 script …...
Kubernetes Gateway API 攻略:解锁集群流量服务新维度!
Kubernetes Gateway API 刚刚 GA,旨在改进将集群服务暴露给外部的过程。这其中包括一套更标准、更强大的 API资源,用于管理已暴露的服务。在这篇文章中,我将介绍 Gateway API 资源,并以 Istio 为例来展示这些资源是如何关联的。通…...
直播间弹幕直播游戏开发教程
随着直播技术的不断发展,交互式弹幕直播游戏成为吸引用户参与的新兴方式。这种游戏融合了实时弹幕互动和直播视频,为观众和主播提供了更加丰富的互动体验。在这篇文章中,我们将探讨从概念到实现的步骤,帮助你打造一款引人入胜的交…...
HCOMM获取拓扑层级rank数量
HcclRankGraphGetRankSizeByLayer 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT&…...
Harness宏观架构:DeerFlow 2.0 断点续跑机制 架构设计与实现
DeerFlow 2.0 断点续跑机制:架构设计与实现 在分布式 AI Agent 编排日益普及的今天,原有架构中状态碎片化、持久化逻辑冗余、多节点快照冲突等痛点,已成为制约高并发、长时任务稳定运行的关键瓶颈。 AI 应用 对长时任务稳定性、状态可观测性…...
natbot部署指南:如何快速配置本地与服务器环境的GPT-3浏览器控制工具
natbot部署指南:如何快速配置本地与服务器环境的GPT-3浏览器控制工具 【免费下载链接】natbot Drive a browser with GPT-3 项目地址: https://gitcode.com/gh_mirrors/na/natbot natbot是一款利用GPT-3驱动浏览器的创新工具,能够通过自然语言指令…...
AI在创业金融中的三十年演进:从SVM到神经网络的融合应用
1. 项目概述:当AI遇见创业金融如果你在金融科技圈待过几年,或者自己创过业、融过资,你大概率会听过这样的故事:一个满怀激情的创始人,拿着一份精心打磨的商业计划书,见了十几个投资人,最后因为“…...
鸿蒙PC多端适配的断点设计与布局策略
踩坑记录25:多端适配的断点设计与布局策略 阅读时长:10分钟 | 难度等级:高级 | 适用版本:HarmonyOS NEXT (API 12) 关键词:GridRow、GridCol、断点系统、响应式布局 声明:本文基于真实项目开发经历编写&…...
RankSpot 全自动 AI 智能体技术架构与核心机制深度解析
摘要 RankSpot 作为面向 SEO 内容生产的全自动 AI 智能体,构建了 “关键词研究 - 内容生成 - SEO 优化 - 自动发布 - 数据监控” 的端到端技术闭环。本文从技术底层出发,系统拆解 RankSpot 的整体架构、核心技术模块、智能体工作流、算法模型选型、数据…...
可长期合作的定制软件开发公司技术服务商
别再为软件定制烦恼!这家公司用十年经验,彻底解决企业开发痛点当我们为一项重要的业务、一个创新的点子,或是整个企业的数字化转型寻求软件支持时,找到一家靠谱的软件开发服务商,往往比软件开发本身更令人头疼。预算超…...
留学生降AI评测:实测3款结构级优化工具,英文论文稳过Turnitin检测
盯着屏幕上Turnitin检测报告里大片大片的浅蓝色,手里本来觉得稳了的Essay瞬间成了烫手山芋。很多留学生或者正在赶毕业论文的学弟学妹都在交稿前经历过这种时刻。 明明每一个字都是自己熬夜翻文献找数据敲出来的,最后还是被标蓝。其实是因为你的行文习惯…...
cann/sip FFT逆短时傅里叶变换
Istft 【免费下载链接】sip 本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库,基于华为Ascend AI处理器,专门为信号处理领域而设计。 项目地址: https://gitcode.com/cann/sip 产品支持情况 产品是否支持Atlas 200I/500 A2 推理产品…...
CANN/pypto设置主机选项API文档
pypto.set_host_options 【免费下载链接】pypto PyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 产品支持情况 产品是否支持Atlas A3 训练系列产品/Atlas A3 推理系列产…...
