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

[leetcode刷题]面试经典150题之8同构字符串(简单)

这个题虽然是简单题,但是看了半天还是没啥好思路,最后看了解题学到了不少知识点

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)

相关文章:

  • kubernetes K8S 结合 Istio 实现流量治理
  • 基于Java+Jsp+SpringMVC漫威手办商城系统设计和实现
  • 主数据管理的误区有哪些?
  • Java-数据结构-Map和Set-(二)-哈希表 |ू・ω・` )
  • 学习Java (四)
  • 微商伙伴软件功能介绍
  • JavaEE: 深入探索TCP网络编程的奇妙世界(六)
  • Mybatis缓存机制(图文并茂!)
  • 雷池 WAF 如何配置才能正确获取到源 IP
  • Python中requests模块(爬虫)基本使用
  • MySQL的驱动安装
  • OpenCV-图像拼接
  • Python爬虫爬取王者荣耀英雄信息并保存到图数据库
  • Spring源码学习:SpringMVC(2)DispatcherServlet初始化【子容器9大组件】
  • 【YOLO目标检测车牌数据集】共10000张、已标注txt格式、有训练好的yolov5的模型
  • @jsonView过滤属性
  • 【React系列】如何构建React应用程序
  • 2017 年终总结 —— 在路上
  • angular组件开发
  • Apache Pulsar 2.1 重磅发布
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CAP 一致性协议及应用解析
  • CentOS6 编译安装 redis-3.2.3
  •  D - 粉碎叛乱F - 其他起义
  • Flannel解读
  • HashMap ConcurrentHashMap
  • in typeof instanceof ===这些运算符有什么作用
  • input实现文字超出省略号功能
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript设计模式之工厂模式
  • miaov-React 最佳入门
  • MobX
  • Phpstorm怎样批量删除空行?
  • php的插入排序,通过双层for循环
  • PHP面试之三:MySQL数据库
  • React组件设计模式(一)
  • Redux 中间件分析
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 初识 webpack
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 分类模型——Logistics Regression
  • 浏览器缓存机制分析
  • 排序(1):冒泡排序
  • 深入浏览器事件循环的本质
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信开放平台全网发布【失败】的几点排查方法
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • ###项目技术发展史
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $refs 、$nextTic、动态组件、name的使用
  • (CPU/GPU)粒子继承贴图颜色发射