[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 的组件…...
别再手动调时间了!手把手教你用LinuxPTP的ptp4l和phc2sys搞定TSN网络时钟同步
工业TSN网络高精度时钟同步实战:从原理到生产环境部署 在工业自动化、智能驾驶和实时音视频传输领域,微秒级的时间同步已成为刚需。传统NTP协议毫秒级的精度在这些场景下显得力不从心,而基于IEEE 1588和802.1AS协议的PTP(精确时间…...
RTX3070 + CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决)
RTX3070 CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决) 当你手握一块RTX3070显卡,想要复现PointNet这一经典点云处理网络时,是否曾被环境配置的各种坑绊住脚步?本文将带你避开…...
Tsunami Arduino硬件抽象库:高精度信号发生与频率测量
1. Tsunami信号发生器与频率计硬件抽象库概述Tsunami 是一款面向嵌入式测试与教学场景的多功能信号发生器与频率计硬件平台,其核心价值在于将高精度模拟信号生成、宽频带数字信号捕获与实时频率测量能力集成于紧凑的单板系统中。本库(tsunami-arduino&am…...
C语言在嵌入式开发中的核心地位与实践技巧
1. 为什么C语言仍然是嵌入式开发的基石?作为一名在嵌入式行业摸爬滚打十年的老工程师,我见过太多人轻视C语言的重要性。直到现在,我面试的应届生中仍有超过60%对指针的理解停留在"变量地址"这种表层概念。但现实是,全球…...
日期时间格式化中的字母代码解析与应用实例
1. 日期时间格式化字母代码入门指南 第一次接触日期时间格式化时,看到那些神秘的字母组合是不是一头雾水?yy、MM、dd这些看起来简单的代码,在实际使用中却藏着不少门道。作为处理时间数据的基础技能,掌握这些字母代码的含义和用法…...
老生常谈:聊聊mysql幻读问题?
之前有位小伙伴美团三面,一直被追求「幻读是否被 MySQL 可重复度隔离级别彻底解决了?」之前我也提到过,MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」,但是它很大程度上避免幻读现象(并不是完全解决了࿰…...
LeetCode 热题 100(每日两题)-Day2
坚持打卡第二天!昨天的哈希表大显神威,今天我们将继续探索哈希集合的妙用,并引入数组操作中极其重要的技巧——双指针(快慢指针)。一、最长连续序列LeetCode 第 128 题,难度中等。这道题的难点在于题目强制…...
3步搞定电脑风扇噪音!FanControl风扇控制软件完全指南,让你的电脑从此安静如新!
3步搞定电脑风扇噪音!FanControl风扇控制软件完全指南,让你的电脑从此安静如新! 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项…...
如何高效解决Windows驱动存储臃肿问题?DriverStore Explorer带来75-90%的空间释放效率提升
如何高效解决Windows驱动存储臃肿问题?DriverStore Explorer带来75-90%的空间释放效率提升 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统随着使用时间增…...
Qt属性动画进阶:QPropertyAnimation在自定义控件动态效果中的应用
1. QPropertyAnimation基础入门 第一次接触Qt动画框架时,我被QPropertyAnimation的简洁API惊艳到了。这个看似简单的类,却能创造出丝滑流畅的界面动效。先来看个最基础的例子:让按钮从左向右滑动。你只需要5行核心代码: QProperty…...
