稀碎从零算法笔记Day14-LeetCode:同构字符串

题型:字符串、哈希表

链接:205. 同构字符串 - 力扣(LeetCode)

来源:LeetCode

题目描述

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

如果 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
  • s 和 t 由任意有效的 ASCII 字符组成

题目思路

这里笔者对题目要求一开始错误分析,导致第一个思路错了

错误思路:看样例,觉得创建两个unordered_map<char,int> 其中key是字母,value是出现了几次,这样的话将两个string的字符分别存入两个无序图中。看每个键值对中value值是否相等。

后来发现错误(特例很简单:【aaabbbab】和[aaabbbba])

后看题解,发现原来真的可以【映射】——具体实现思路就是将value改为另一个字符串的字母。

这样就看  这个字母有没有映射:如果有映射,但是映射不是对面的那个字符串,那么就可以false

C++代码

直接上正确代码:

class Solution {
public:bool isIsomorphic(string s, string t) {if(s.length() != t.length())return 0;// key:自己的字母 value:映射的字母unordered_map<char,char> hash1;unordered_map<char,char> hash2;for(int i=0;i<s.length();i++){char chaR1 = s[i], chaR2 = t[i];if(hash1.count(chaR1) && hash1[chaR1] != chaR2 || hash2.count(chaR2) && hash2[chaR2]!=chaR1)//count 看当前的key对应的value有没有映射。return false;hash1[chaR1]=chaR2;hash2[chaR2]=chaR1;}return 1;}
};

结算页面

顺便提一嘴:时间复杂度最少的话,貌似是 一个无序图  一个哈希集合 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI相关的实用工具分享

AI实用工具大赏&#xff1a;赋能科研与生活&#xff0c;探索AI的无限可能 前言 在数字化浪潮汹涌而至的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;无论是工作还是生活&#xff0c;都在悄然发生改变。AI的崛起不仅为我们带…

AHU 算法分析 实验四 动态规划

实验四&#xff1a;动态规划 实验目的 • 理解动态规划的基本思想&#xff0c;理解动态规划算法的两个基本要素最 优子结构性质和子问题的重叠性质。 • 熟练掌握典型的动态规划问题。 • 掌握动态规划思想分析问题的一般方法&#xff0c;对较简单的问题能正确 分析&#x…

网络故障基本判断方法

1&#xff09;电脑上使用winR键&#xff0c;打开运行窗口&#xff0c;输入CMD命令&#xff0c;点击回车键 2&#xff09;在弹出的CMD运行窗口中输入ipconfig命令 通过该命令可以查看本机的IP地址&#xff0c;子网掩码和网关等信息。确认电脑中所有网卡配置是否正确。 3&…

llc稳压基本思路2

这套控制思路实际上就是开关电源中常见的反馈系统 大致思路就是&#xff0c;如果由于其他参数波动引起了输出电压偏差&#xff0c;我们可以直接监测这个输出电压&#xff0c;然后根据输出电压与目标电压值的偏差信号传输给芯片&#xff0c;然后芯片来改变频率&#xff0c;从而改…

人工智能研究的各个学派

于对智能产生根源的理解不同形成了三大学派。 一、符号主义 符号主义&#xff08;Symbolism&#xff09;是人工智能研究中的一个重要学派&#xff0c;也被称为逻辑主义&#xff08;Logicism&#xff09;、心理学派&#xff08;Psychlogism&#xff09;或计算机学派&#xff08…

Flink StreamTask启动和执行源码分析

文章目录 前言StreamTask 部署启动Task 线程启动StreamTask 初始化StreamTask 执行 前言 Flink的StreamTask的启动和执行是一个复杂的过程&#xff0c;涉及多个关键步骤。以下是StreamTask启动和执行的主要流程&#xff1a; 初始化&#xff1a;StreamTask的初始化阶段涉及多个…

蓝桥杯2023年-接龙数列(dp)

题目描述 对于一个长度为 K 的整数数列&#xff1a;A1, A2, . . . , AK&#xff0c;我们称之为接龙数列当且仅当 Ai 的首位数字恰好等于 Ai−1 的末位数字 (2 ≤ i ≤ K)。 例如 12, 23, 35, 56, 61, 11 是接龙数列&#xff1b;12, 23, 34, 56 不是接龙数列&#xff0c;因为 …

前端学习之行内和块级标签

行内标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>span</title> </head> <body><!-- 行内标签特点&#xff1a;1、不换行,一行可以放多个2、默认宽度内容撑开代表&#…

[2023年]-hadoop面试真题(一)

&#xff08;北京&#xff09;HDFS底层存储原理? (北京) HDFS读写数据流程? (北京) HDFS如何管理元数据或者checkpoint的理解 ? (北京) HDFS常用命令 ? (北京) hadoop调优 (北京) HDFS扩容原理 (北京) HDFS有哪些进程,分别是什么? (北京) HDFS中大量小文件对…

Go实现日志2——支持结构化和hook

代码保存在&#xff1a;https://github.com/liwook/Go-projects/tree/main/log/sulogV2​​​​​​​ 1.日志结构化 日志记录的事件以结构化格式(键值对&#xff0c;或通常是 JSON)表示&#xff0c;随后可以通过编程方式对其进行解析&#xff0c;便于对日志进行监控、警报、…

Googlenet网络架构

原文链接&#xff1a;[1409.4842v1] Going Deeper with Convolutions (arxiv.org) 图源&#xff1a;深入解读GoogLeNet网络结构&#xff08;附代码实现&#xff09;-CSDN博客 表截自原文 以下&#x1f4d2;来自博客深入解读GoogLeNet网络结构&#xff08;附代码实现&#xff0…

【顶刊|修正】多区域综合能源系统热网建模及系统运行优化【复现+延伸】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序复现《多区域综合能源系统热网建模及系统运行优化》模型并进一步延伸&#xff0c;基于传热学的基本原理建立了区域热网能量传输通用模型&#xff0c;对热网热损方程线性化实现热网能量流建模&#xff0…

使用docker-compose编排ruoyi项目

目录 一、开始部署 1.拉取ruoyi代码 2.拉取node镜像 3.拉取maven镜像 4.在/root/ruoyi/java下写一个Dockerfile用于后端Java环境 5.拉取MySQL&#xff0c;Redis&#xff0c;Nginx镜像 6.在/root/java目录下写一个nginx.conf 7.在/root/ruoyi目录下写docker-compose.yml文…

Idea导入Maven项目

方法一&#xff1a;使用Maven面板 方法二&#xff1a;在项目结构中设置&#xff0c;在最后一步中选择pom.xml。

js【详解】bind()、call()、apply()( 含手写 bind,手写 call,手写 apply )

必备知识点&#xff1a;js 【详解】函数中的 this 指向_js function this-CSDN博客 https://blog.csdn.net/weixin_41192489/article/details/123093256 bind、call、apply 的相同点 都是Function原型上的方法用途都是改变 this 的指向第一个参数都是新的 this bind、call、app…

前端学习之列表标签

目录 有序列表 结果 无序标签 结果 数据标签 结果 有序列表 &#xff08;注&#xff1a;注释是解释&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </…

SpringBoot实现 PDF 添加水印

方案一&#xff1a;使用 Apache PDFBox 库 ①、依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version> </dependency>②、添加水印 public class PdfoxWaterma…

蓝桥集训之日期差值

蓝桥集训之日期差值 模版&#xff1a;判断闰年 总天数 月份天数 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int months[]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int is_leap(int y){if(y % 10…

【JavaEE初阶系列】——计算机是如何工作的

目录 &#x1f388;冯诺依曼体系 ❗外存和内存的概念 ❗CPU中央处理器—人类当今科技领域巅峰之作之一 &#x1f6a9;如何衡量cpu &#x1f6a9;指令&#xff08;Instruction&#xff09; &#x1f388;操作系统&#xff08;Operating System&#xff09; &#x1f388;…

关于GPU显卡的介绍

一.关于英伟达历代产品架构 显卡是一种计算机硬件设备,也被称为显示适配器或图形处理器。目前的硬件部分主要由主板、芯片、存储器、散热器&#xff08;散热片、风扇&#xff09;等部分。显卡的主要芯片是显卡的主要处理单元。显卡上也有和计算机存储器相似的存储器&#xff0…