当前位置: 首页 > news >正文

[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同构字符串(简单)

这个题虽然是简单题&#xff0c;但是看了半天还是没啥好思路&#xff0c;最后看了解题学到了不少知识点 1.index() 函数查找序列中首次出现的元素索引 2.zip函数&#xff1a;用于将可迭代的对象&#xff08;如列表、元组、字典等&#xff09;作为参数&#xff0c;将对象中对应…...

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】

&#x1f48c; 所属专栏&#xff1a;【单片机开发软件技巧】 &#x1f600; 作  者&#xff1a; 于晓超 &#x1f680; 个人简介&#xff1a;嵌入式工程师&#xff0c;专注嵌入式领域基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大家&#xff1…...

【rust】 基于rust编写wasm,实现markdown转换为html文本

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

Java中的反向代理与负载均衡:Nginx与Java服务的集成

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

高级java每日一道面试题-2024年9月26日-运维篇[分布式篇]-如何保证每个服务器的时间都是同步的?

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

探索MemGPT:AI界的新宠儿

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

处理RabbitMQ连接和认证问题

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

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()吗&#xff1f; 你知道下面代码的输出结果吗&#xff1f; int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数&#xff0c;它允许你将数据以特定的格式输出到标准输出设备&#xff08;通常是屏幕&#xff09;。p…...

编译win2k3中tools目录下i386mk.inc文件的作用

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

IPSec隧道协议学习(一)

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

计网作业3

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

什么是注入攻击???

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

牛客小白月赛101(A~E)

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

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&#xff09;画图&#xff01;&#xff01;&#xff01; -> 直观 形象 便于我们理解 2&#xff09;引入虚拟“头”节点 1.便于处理边界条件 2.方便我们对链表进行操作 3.不要吝啬空间&#xff0c;大胆定义变量 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 摄像头。它用于从基本颜色跟踪&#xff08;blob 跟…...

JAVA多线程机制

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

Element-plus安装及其基础组件使用

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

Phi-3-mini-4k-instruct-gguf步骤详解:supervisor服务管理与错误日志定位方法

Phi-3-mini-4k-instruct-gguf步骤详解&#xff1a;supervisor服务管理与错误日志定位方法 1. 模型概述 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本&#xff0c;特别适合问答、文本改写、摘要整理和简短创作等场景。这个开箱即用的解决方案已…...

Retinaface+CurricularFace模型在智能门禁系统中的实战应用

RetinafaceCurricularFace模型在智能门禁系统中的实战应用 1. 引言 想象一下这样的场景&#xff1a;每天早晨上班高峰期&#xff0c;办公楼入口排着长队等待刷卡进门&#xff1b;访客需要在前台登记身份证&#xff0c;保安还要手动核对信息。这种传统门禁方式不仅效率低下&am…...

Java微服务在Istio中出现“偶发503 no healthy upstream”?7分钟定位Sidecar健康检查盲区与Liveness Probe冲突真相

第一章&#xff1a;Java微服务在Istio中偶发503问题的现象与影响在基于Istio构建的服务网格环境中&#xff0c;Java微服务&#xff08;尤其是采用Spring Cloud Kubernetes或原生Spring Boot Istio Sidecar部署模式&#xff09;频繁出现偶发性HTTP 503 Service Unavailable响应…...

别再用asyncio硬扛高并发了!无GIL环境下Python原生多线程性能翻倍的6个核心调优参数

第一章&#xff1a;Python无锁GIL环境下的并发模型演进全景Python长期以来受全局解释器锁&#xff08;GIL&#xff09;制约&#xff0c;导致多线程无法真正并行执行CPU密集型任务。近年来&#xff0c;随着CPython 3.12正式引入实验性“无GIL构建选项”&#xff08;--without-py…...

Redis 用错接口反而更慢?高并发下这几个坑,90% 后端都踩过

前言线上出过一个特别反直觉的故障&#xff1a;接口本来直连 MySQL 跑得好好的&#xff0c;加上 Redis 缓存后&#xff0c;响应时间直接翻倍&#xff0c;CPU 还往上飘。一开始怀疑网络、怀疑 Redis 性能、怀疑代码 Bug&#xff0c;排查一整天才发现&#xff1a;缓存逻辑没错&am…...

C++ 智能指针陷阱与调试技巧

C智能指针陷阱与调试技巧 在现代C开发中&#xff0c;智能指针是管理动态内存的利器&#xff0c;能有效避免内存泄漏和悬空指针等问题。若使用不当&#xff0c;智能指针本身也可能成为陷阱&#xff0c;导致难以察觉的bug。本文将深入探讨几种常见的智能指针陷阱&#xff0c;并分…...

Calypso vs PC-DMIS:三坐标两大软件脱机编程实战对比与选型指南

Calypso vs PC-DMIS&#xff1a;三坐标测量软件脱机编程深度对比与实战选型策略 在精密制造领域&#xff0c;三坐标测量机(CMM)的脱机编程能力直接决定了检测效率与资源利用率。作为行业两大标杆&#xff0c;蔡司Calypso与海克斯康PC-DMIS在用户界面设计、编程逻辑、仿真验证等…...

TD-ACC+实验系统入门指南:手把手教你搭建典型环节模拟电路

TD-ACC实验系统实战手册&#xff1a;从零构建典型环节电路的21个关键细节 第一次接触TD-ACC实验系统时&#xff0c;看着密密麻麻的接口和旋钮&#xff0c;我的手指悬在半空迟迟不敢落下——生怕一个错误的连接就会烧毁昂贵的运算放大器。这种忐忑直到成功捕捉到第一个完美方波信…...

从单片机思维到FPGA思维:我用Xilinx Ego1做循迹小车踩过的那些‘坑’

从单片机思维到FPGA思维&#xff1a;Xilinx Ego1循迹小车开发实战避坑指南 第一次用FPGA做循迹小车时&#xff0c;我盯着Vivado里密密麻麻的时序报告发呆了半小时——这和我熟悉的单片机开发完全是两个世界。作为有三年STM32开发经验的工程师&#xff0c;本以为凭借Verilog语法…...

4个核心功能实现智能散热:FanControl个性化温控指南

4个核心功能实现智能散热&#xff1a;FanControl个性化温控指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...