【LeetCode面试150】——205同构字符串

news/2024/9/18 13:37:40/ 标签: leetcode, 面试, 算法, python, c++

博客昵称:沈小农学编程

作者简介:一名在读硕士,**定期更新相关算法面试题**,欢迎关注小弟!

PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

题目难度:简单

默认优化目标:最小化时间复杂度。

Python默认为Python3。

目录

1 题目描述

2 题目解析

3 算法原理及代码实现

参考文献


1 题目描述

给定两个字符串 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 字符组成

2 题目解析

输入是两个字符串s和t,输出是布尔值。如果s中的字符能以某种方式映射到t,则说s和t是同构的。如果s和t同构,输出true;反之输出false。不同字符不能映射到同一个字符上。

 

3 算法原理及代码实现

构建两张哈希表,哈希表s2t以s中的字符为键值,t中的字符为值;哈希表t2s以t中的字符为键值,以s中的字符为值。当发生哈希冲突时,返回false。如果遍历完没有冲突,返回true。

 

时间复杂度O(n),空间复杂度O(\sum)

C++代码实现

class Solution {
public:bool isIsomorphic(string s, string t) {unordered_map<char,char> s2t;unordered_map<char,char> t2s;int n=s.size();for(int i=0;i<n;i++){char x=s[i],y=t[i];if(s2t.count(x)&&s2t[x]!=y || t2s.count(y)&&t2s[y]!=x){return false;}s2t[x]=y;t2s[y]=x;}return true;}
};

Python代码实现

python">class Solution:def isIsomorphic(self, s: str, t: str) -> bool:s2t = {}t2s = {}n = len(s)for i in range(n):x, y = s[i], t[i]if (x in s2t and s2t[x] != y) or (y in t2s and t2s[y] != x):return Falses2t[x] = yt2s[y] = xreturn True

参考文献

力扣面试经典150题

力扣官方题解


http://www.ppmy.cn/news/1524102.html

相关文章

数据结构--二叉树(C语言实现,超详细!!!)

文章目录 二叉树的概念代码实现二叉树的定义创建一棵树并初始化组装二叉树前序遍历中序遍历后序遍历计算树的结点个数求二叉树第K层的结点个数求二叉树高度查找X所在的结点查找指定节点在不在完整代码 二叉树的概念 二叉树&#xff08;Binary Tree&#xff09;是数据结构中一种…

SAP F110 批量付款付款参考(KIDNO)和分配字段(ZUONR)带入会计凭证

SAP F110 批量付款付款参考(KIDNO)和分配字段(ZUNOR)带入会计凭证 财务有个要求需要将付款建议的付款参考和分配字段写入最后的ZP凭证 最后的效果大概就是这样的 折腾了很久, 1、先是想到的GGB1的替代,但是试验了很久都没有搞定,貌似很多人遇到了这个情况。 2、然后…

坐牢第三十七天(Qt)

作业&#xff1a; 使用qt做一个闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPixmap> #include <QBitmap> #include <QLabel> //标签类 #include <QLineEdit> //行编辑器类 #include <QPushBu…

【QT】自制一个简单的小闹钟,能够实现语音播报功能

做了一个自制的小闹钟&#xff0c;能够自己输入时间&#xff0c;以及对应的闹铃&#xff0c;时间到了自动播放设定的闹铃&#xff0c;可以随时取消重新设定&#xff0c;采用分文件编译 注意&#xff1a;需要在.pro文件中加入&#xff1a;QT core gui texttospeech 代码…

Leetcode 最长连续序列

算法流程&#xff1a; 哈希集合去重&#xff1a; 通过将数组中的所有元素放入 unordered_set&#xff0c;自动去除重复元素。集合的查找操作是 O(1)&#xff0c;这为后续的快速查找提供了保证。 遍历数组&#xff1a; 遍历数组中的每一个元素。对于每个元素&#xff0c;首先检…

深入理解Docker核心原理:全面解析Docker Client

随着云计算与容器技术的飞速发展&#xff0c;Docker已经成为软件开发、部署和运维中的重要工具之一。在Docker的架构中&#xff0c;Docker Client作为用户操作Docker系统的接口&#xff0c;起着至关重要的作用。本文将详细解析Docker Client的核心原理、工作机制、常用命令以及…

复仇时刻 华为的狙击还没结束

文&#xff5c;琥珀食酒社 作者 | 积溪 华为的复仇时刻已到啊 名场面即将再次上演 看过华为和苹果发布会的人 应该都有似曾相识的感觉 去年8月底 雷女士访华第二天 华为发布了Mate 60先锋计划 9月13日苹果发布iPhone 15 恰恰就在这天 华为咔嚓一下 又放出了大折叠屏…

使用Python中的igraph为绘图添加标题和图例

在 igraph 中&#xff0c;可以通过添加标题和图例来增强图形的可读性和表达能力。我们可以使用 igraph.plot 函数进行绘图&#xff0c;并通过它的参数来指定标题和图例。 1、问题背景 在python中的igraph库中&#xff0c;能否为绘图添加图例和标题&#xff1f;在手册或教程中都…

动手学深度学习(pytorch土堆)-02TensorBoard的使用

1.可视化 代码使用了 torch.utils.tensorboard 将数据记录到 TensorBoard 以便可视化。具体来说&#xff0c;它将标量数据记录到目录 logs 中&#xff0c;使用的是 SummaryWriter 类。 代码分解如下&#xff1a; SummaryWriter("logs")&#xff1a;初始化一个 Ten…

Unity 之如何实现基于OpenAI的ChatGPT的聊天机器人

文章目录 前言接入说明Http请求GPT社区库1.C#/.Net的库2.OpenUPM库3.语音对话GPT实现Unity 接入OpenAI1.导入包2.设置你的 OpenAI 帐户3.向 OpenAPI 发出请求4.语音对话功能5.代码实现6.UI界面实现精彩推荐前言 在当前的技术环境中,人工智能聊天机器人越来越普遍。OpenAI的Ch…

搭建Windows下的Rust开发环境

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 2.1.1 安装vs_buildtools 在Windows系列操作系统中&#xff0c;Rust开发环境需要依…

CSS实现优惠券透明圆形镂空打孔效果等能力学习

前言&#xff1a;无他&#xff0c;仅供学习记录&#xff0c;通过一个简单的优惠券Demo实践巩固CSS知识。 本次案例主要学习或巩固一下几点&#xff1a; 实现一个简单的Modal&#xff1b;如何进行复制文本到粘贴板&#xff1b;在不使用UI的svg图片的情况下&#xff0c;如何用C…

cyw43012 wifi+蓝牙二合一模块推荐

CYWL6302 超低功耗WiFi蓝牙模块参数介绍: 1、Wi-Fi 4 (802.11n and 802.11ac-friendly) Dual-band (2.4/5 GHz) MCS8 (256-QAM) for 20MHz channels, up to 78Mbps PHY data rate 2、major chip is cyw43012 3、Supports BDR (1Mbps), EDR (2/3Mbps), Bluetooth LE (1/2Mbps…

OpenCV结构分析与形状描述符(16)判断两个凸多边形是否相交的函数intersectConvexConvex()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 查找两个凸多边形的交集。 intersectConvexConvex 是一个在 OpenCV 中用于判断两个凸多边形是否相交的函数。此函数可以帮助我们确定两个二维凸多…

RISC-V (九)抢占式多任务

主要的思想&#xff1a;借用定时器中断实现。设置定时器寄存器&#xff0c;系统自动触发定时器中断时会跳到trap handler这个函数里。借用这个函数做上下文的切换&#xff0c;从而实现了抢占式多任务。 定时器中断&#xff1a;跳到trap handler函数&#xff0c;同时系统自动将…

TikTok运营需要的独立IP如何获取?

TikTok作为当下炙手可热的社交媒体平台&#xff0c;吸引了众多个人创作者和企业进驻。在进行TikTok运营时&#xff0c;许多经验丰富的用户都倾向于选择独立IP。那么&#xff0c;TikTok运营为什么需要独立IP&#xff1f;又该如何获取呢&#xff1f;本文将详细为您解答这些问题。…

WebRTC服务器搭建

坑比Npm 记录一次18.04安装nodeJs的记录 apt-get install npm版本太低 需要下个16的版本 不然就真的特么 死锁 1.下载版本 #wget https://nodejs.org/dist/v16.0.0/node-v16.0.0-linux-x64.tar.xz#别用这个憨批地址&#xff0c;访问不了 wget https://npmmirror.com/mirrors…

如何恢复最近删除的文件[Windows Mac]

可以通过多种方式删除文件。因此&#xff0c;用户需要恢复他们不小心删除的文件的情况并不少见。 好消息是&#xff0c;用户至少通常可以在删除最近删除的文件后几天或几周内恢复它们。 回收站是 Windows 中的文件删除保护措施&#xff0c;可以轻松恢复文件。 除非另有配置&…

每日一题 二分查找分巧克力

先复习一下二分查找基本格式 check函数{} l0; r10000; while(l1!r){ if(check()条件){l mid; else //这要看题目条件往哪里缩小范围 r mid-1;}} 看下这道题 先找一下条件设置check函数&#xff0c;读题可以发现条件就是每个孩子都要分到一块巧克力&…

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具&#xff0c;支持在一块屏幕上同时播放多个视频。其主要功能包括&#xff1a; 多视频播放&#xff1a;用户可以在一个窗口中同时播放任意数量的视频&#xff0c;数量仅受硬件性能限制。支持多种格式和流媒体&…