[leetcode刷题]面试经典150题之7同构字符串(简单)
这个题虽然是简单题,但是看了半天还是没啥好思路,最后看了解题学到了不少知识点
1.index() 函数查找序列中首次出现的元素索引
2.zip函数:用于将可迭代的对象(如列表、元组、字典等)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(注意,返回的其实是一个迭代器)。
例:
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)# 输出:这是一个迭代器,所以直接打印看到的是它的内存地址
# 要查看其内容,可以将其转换为列表
print(list(zipped)) # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]
3.字典中的一些用法
a={}
a[1]=2
print(a)
下面我会用上面的知识写两种解法
题目
同构字符串
给定两个字符串 s
和 t
,判断它们是否是同构的。
如果 s
中的字符可以按某种映射关系替换得到 t
,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
思考
两个不同的字符串,要对应他们的结构是否相同,首先能想到的就是字典是一一对应的,我们可以用字典去做。
代码1
class Solution:def isIsomorphic(self, s: str, t: str) -> bool:# 初始化两个字典,用于分别记录 s -> t 和 t -> s 的映射关系s_to_t = {}t_to_s = {}# 使用 zip 函数同时遍历 s 和 t 的字符对for char_s, char_t in zip(s, t):# 检查是否已经有从 s 中 char_s 到 t 中 char_t 的映射if char_s in s_to_t:# 如果存在映射,且映射的目标字符不是当前的 char_t,则返回 Falseif s_to_t[char_s] != char_t:return Falseelse:# 如果不存在映射,则建立从 char_s 到 char_t 的映射s_to_t[char_s] = char_t# 同样地,检查是否已经有从 t 中 char_t 到 s 中 char_s 的映射if char_t in t_to_s:# 如果存在映射,且映射的目标字符不是当前的 char_s,则返回 Falseif t_to_s[char_t] != char_s:return Falseelse:# 如果不存在映射,则建立从 char_t 到 char_s 的映射t_to_s[char_t] = char_s# 如果循环结束时没有发现不符合条件的映射关系,则返回 True,表示 s 和 t 是同构的return True
从解题中看到一个更简单的,用index函数去做的
代码2
class Solution:def isIsomorphic(self, s: str, t: str) -> bool:a=0s=list(s)t=list(t)i=0j=0while i<len(s) and j<len(s):if s.index(s[i])==t.index(t[j]):a+=1i+=1j+=1else:return Falsereturn a==len(s)
相关文章:

[leetcode刷题]面试经典150题之7同构字符串(简单)
这个题虽然是简单题,但是看了半天还是没啥好思路,最后看了解题学到了不少知识点 1.index() 函数查找序列中首次出现的元素索引 2.zip函数:用于将可迭代的对象(如列表、元组、字典等)作为参数,将对象中对应…...

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】
💌 所属专栏:【单片机开发软件技巧】 😀 作 者: 于晓超 🚀 个人简介:嵌入式工程师,专注嵌入式领域基础和实战分享 ,欢迎咨询! 💖 欢迎大家࿱…...

【rust】 基于rust编写wasm,实现markdown转换为html文本
文章目录 背景转换预览核心代码前置依赖rustup换源cargo换源中科大 wasm-pack安装 背景 尝试用rust编写一款markdown转html的插件,通过wasm给html使用,不得不说体积挺小,约200K, 比go的wasm起步2MB看着舒服点。 不过go的配置和换…...

Java中的反向代理与负载均衡:Nginx与Java服务的集成
Java中的反向代理与负载均衡:Nginx与Java服务的集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨一下Java应用中的反向代理与负载均衡,以及如何通过Ngin…...

高级java每日一道面试题-2024年9月26日-运维篇[分布式篇]-如何保证每个服务器的时间都是同步的?
如果有遗漏,评论区告诉我进行补充 面试官: 如何保证每个服务器的时间都是同步的? 我回答: 确保服务器之间的时间同步对于维护分布式系统的一致性、日志记录的准确性以及安全认证的有效性非常重要。以下是几种常见的方法来保证服务器时间同步: 1. 使用NTP&#…...

探索MemGPT:AI界的新宠儿
文章目录 探索MemGPT:AI界的新宠儿1. 背景介绍2. MemGPT是什么?3. 如何安装MemGPT?4. 简单的库函数使用方法5. 场景应用场景一:创建持久聊天机器人场景二:文档分析场景三:多会话聊天互动 6. 常见Bug及解决方…...

处理RabbitMQ连接和认证问题
在使用RabbitMQ进行消息队列管理时,我们可能会遇到各种连接和认证问题。本文将介绍如何诊断和解决这些问题,并通过使用RabbitMQ的管理端进行登录验证来确保配置正确。 1. 问题概述 在最近的一次部署中,我们遇到了两个主要问题: …...

FFmpeg中结构释放小函数
用于FFmpeg一些结构内存释放问题 #pragma once #include <iostream>extern "C" { #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libavutil/avutil.h" #include "libavutil/frame.h"…...

C语言中的一些小知识(三)
一、你了解printf()吗? 你知道下面代码的输出结果吗? int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数,它允许你将数据以特定的格式输出到标准输出设备(通常是屏幕)。p…...

编译win2k3中tools目录下i386mk.inc文件的作用
编译win2k3中tools目录下i386mk.inc文件的作用 在Windows Driver Kit(WDK)的根安装目录下,这些文件存储在bin子目录中。 在这些文件中,有特定于该目标的优化规则或汇编指令。可能还需要额外的链接标志、资源编译器标志或C预处理器…...

IPSec隧道协议学习(一)
前情回顾 前面介绍的GRE隧道协议,可以字LAN之间通过Internet建立隧道,实现网络间资源共享,但是GRE隧道协议不能实现加密功能,传输的数据不受加密保护,为了实现在隧道间传输数据包收到加密保护,需要使用IPS…...

计网作业3
1.交换机是依据 MAC地址 来转发数据包的 2.数据链路层 负责将数据封装成帧,在相邻节点间进行传输 数据链路层负责以下任务: 封装数据 物理地址寻址:使用MAC地址进行寻址,确保数据能够在局域网中正确传输到目标节点 介质访问控…...

什么是注入攻击???
在 Java 中,注入攻击是一种利用程序中的安全漏洞来执行恶意代码或获取未经授权的数据的攻击方式。 相关面试题: #{} 和 ${} 的区别是什么? ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属…...

牛客小白月赛101(A~E)
文章目录 写在前面A tb的区间问题思路code B tb的字符串问题思路code C tb的路径问题思路code D tb的平方问题思路code E tb的数数问题思路code 牛客小白月赛101 写在前面 最近几天没怎么刷题,昨天晚上打的这场牛客月赛打的很烂,隔几天不刷题感觉自己的…...

MFC设置特定控件字体大小和背景颜色
MFC设置特定控件字体大小和背景颜色 初始化函数里 m_editFont.CreatePointFont(580 , _T("宋体"));m_ctrlEdit.SetFont(&m_editFont);重写消息 HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC,…...

专题八_链表_算法专题详细总结
目录 链表 1.常用技巧 1)画图!!! -> 直观 形象 便于我们理解 2)引入虚拟“头”节点 1.便于处理边界条件 2.方便我们对链表进行操作 3.不要吝啬空间,大胆定义变量 4.快慢双指针 1.判断链表是否…...

Vue3使用vue-quill富文本编辑器实现图片大小调整
安装uill-image-resize npm install quill-image-resize --save在项目中导入并注册插件 import { QuillEditor, Quill } from vueup/vue-quill; import ImageUploader from quill-image-uploader; import ImageResize from quill-image-resize; //导入插件 import vueup/vue-…...

感知笔记1:ROS 视觉- 跟随红球
- 目录 - 如何在 ROS 中可视化 RGB 相机。如何作为机器人切换主题。如何创建 blob 检测器。如何获取要跟踪的颜色的颜色编码。如何使用 blob 检测数据并移动 RGB 相机以跟踪 blob。 机器人技术中最常见的传感器是不起眼的 RGB 摄像头。它用于从基本颜色跟踪(blob 跟…...

JAVA多线程机制
JAVA多线程的实现 JAVA有两种方法创建线程 (1)继承Thread类 (2)实现Runnable接口 这两种方法都要用到Thread类以及相关方法 Thread类 是一个具体的类,不是抽象类,封装了线程的行为 利用Thread类创建一个…...

Element-plus安装及其基础组件使用
简而言之,在main.js中导出以下库,仅此,搞多了出错难排查 import ElementPlus from element-plus //导入ElementPlus 模块 import element-plus/dist/index.css //引入样式 app.use(ElementPlus) //注册库就能使用了 Element Plus 是一个基于 Vue 3 的组件…...

[产品管理-38]:创意、市场机会、商业可行性的区别
创意、市场机会和商业可行性在创业和商业活动中各自扮演着不同的角色,它们之间既有区别又相互联系。以下是对这三者区别的详细阐述: 产品创意:新颖打破常规、解决的实际问题、满足的客户需求 定义:创意是创造意识或创新意识的简…...

开源标注工具
DoTAT https://github.com/FXLP/MarkTool 后端代码未开放,可能有数据泄露风险 Chinese-Annotator https://github.com/deepwel/Chinese-Annotator 安装非常麻烦,github更新频率比较低,支持功能和doccano类似 IEPY https://github.com/ma…...

数据结构讲解二叉树 【一】
🎁🎁创作不易,关注作者不迷路🎀🎀 C语言二叉树 【一】 前言一、数概念及结构1.数的概念1.2树的相关概念1.3树的表示 二、二叉树的概念及结构2.12.2二叉树的性质2.3二叉树的存储结构 三、二叉树的顺序结构实现3.1二叉树…...

MATLAB基础应用精讲-【数模应用】OR值
目录 前言 几个高频面试题目 or值越小代表什么 RR值、OR值及HR值的区别 算法原理 什么是OR值 OR值的计算方法和含义 注意事项 SPSSAU OR值和RR值 1、背景 2、理论 3、操作 4、SPSSAU 输出结果 5、文字分析 6、剖析 疑难解惑 SE(ln(OR)或SE(ln(RR)的意义? …...

[vulnhub] w1r3s.v1.0
https://www.vulnhub.com/entry/w1r3s-101,220/ 思路:红队笔记 主机发现端口扫描 使用nmap扫描网段类存活主机 因为靶机是我最后添加的,所以靶机IP是133 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-20 09:09 CST…...

c#中的功能优势
装箱和拆箱 性能消耗的直接体现 int iterations 10000000; // 进行一千万次迭代Stopwatch stopwatch new Stopwatch();// 非装箱测试stopwatch.Start();for (int i 0; i < iterations; i){int x i; // 纯值类型操作,无装箱}stopwatch.Stop();Console.Writ…...

Windows系统设置定时任务,周期性执行.bat文件
通过.bat清除注册表项 在 Windows 系统中,.bat 文件(批处理文件)是一个包含一系列命令的文本文件。这些命令会被 Windows 命令解释器 (cmd.exe) 依次执行。 你可以把它想象成一个简单的程序,但它不像 C 或 Python 那样需要编译&a…...

xQTLs 共定位分析(XQTLbiolinks包)
XQTL 共定位分析 XQTLbiolinks 是一个端到端的生物信息学工具,由深圳湾实验室李磊研究团队开发,用于高效地分析公共或用户定制的个xQTLs数据。该软件提供了一个通过与 xQTLs 共定位分析进行疾病靶基因发现的流程,以检测易感基因和致病变异。…...

网络工程(学习记录)
day1创建Vlan Switch>enable Switch#configure terminal Switch(config)#hostname SW1 修改名称为SW1 SW1(config)# SW1(config)#vlan 10 创建vlan10 SW1(config-vlan)#vlan 20 SW1(config)#interface f0/1 进入接口f0…...

全志A133 android10 适配EC20 4G模块
一,移植适配 1. 驱动移植 代码路径:longan/kernel/linux-4.9/drivers/usb/serial/option.c diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 9f96dd2..2f25466 100644 --- a/drivers/usb/serial/option.cb/drivers/us…...