leetcode面试经典算法题——1

链接:https://leetcode.cn/studyplan/top-interview-150/

392. 判断子序列

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例 1:

输入:s = “abc”, t = “ahbgdc”
输出:true

示例 2:

输入:s = “axc”, t = “ahbgdc”
输出:false

提示:

  • 0 <= s.length <= 100
  • 0 <= t.length <= 10^4
  • 两个字符串都只由小写字符组成。

Python代码

class Solution:def isSubsequence(self, s: str, t: str) -> bool:"""搜索s每个字符在t中第一个字符的下标i,每次搜索都缩小范围t[i:]"""len_s = len(s)len_t = len(t)if len_s > len_t:return Falseif len_s == len_t:if s == t:return Trueelse:return Falseindex = 0for i in range(len_s):if s[i] in t[index:]:# 更新下标index = t[index:].index(s[i]) + 1 + indexelse:return Falseelse:return True
if __name__ == '__main__':s = Solution()a = "abc"b = "ahbgdc"print(s.isSubsequence(a, b))

C++代码

#include <iostream>using namespace std;class Solution {
public:bool isSubsequence(string s, string t) {// size()获取字符的长度int s_len = s.size();int t_len = t.size();int index = 0;if(s_len > t_len) return false;if(s_len == t_len){if(s == t) return true;else return false;}// substr()第一个参数是起始下标,第二个元素是长度,该函数是返回一个字符串的子串// find()函数是找字符串中是否包含某个字符,若包含则返回下标,否则返回std::string::nposfor(int i = 0; i < s_len; i++){if (t.substr(index, t_len - index).find(s[i]) != std::string::npos){index = t.substr(index, t_len - index).find(s[i]) + 1 + index;}elsereturn false;}return true;}
};int main()
{string a = "abc";string b = "ahbgdc";Solution s;cout << s.isSubsequence(a, b) << endl;return 0;
}

383. 赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:

输入:ransomNote = “a”, magazine = “b”
输出:false

示例 2:

输入:ransomNote = “aa”, magazine = “ab”
输出:false

示例 3:

输入:ransomNote = “aa”, magazine = “aab”
输出:true

提示:

  • 1 <= ransomNote.length, magazine.length <= 10^5
  • ransomNote 和 magazine 由小写英文字母组成
    Python代码
class Solution(object):def canConstruct(self, ransomNote, magazine):""":type ransomNote: str:type magazine: str:rtype: bool"""# 思路:遍历ransomNote的元素c,每次删除magazine中的c。# 若magazine长度 - ransomNote长度 = 删除后的magazine长度,则返回Truer_len = len(ransomNote)m_len = len(magazine)for i in range(r_len):magazine = magazine.replace(ransomNote[i], "", 1) # 删除一个字符if m_len - r_len == len(magazine):return Trueelse:return Falseif __name__ == '__main__':s = Solution()ransomNote = "a"magazine = "b"print(s.canConstruct(ransomNote, magazine))

C++代码

#include <iostream>using namespace std;class Solution {
public:bool canConstruct(string ransomNote, string magazine) {int r_len = ransomNote.size();int m_len = magazine.size();for(int i = 0; i < r_len; i++){if (magazine.find(ransomNote[i]) != std::string::npos){int index = magazine.find(ransomNote[i]);// erase()函数第一个参数是起始下标,第二个参数是要删除的长度,该函数用于删除字符串中的字串magazine.erase(index, 1);}}if (m_len - r_len == magazine.size()) return true;else return false;}
};int main()
{string a = "aa";string b = "ab";Solution s;cout << s.canConstruct(a, b) << endl;return 0;
}

205. 同构字符串

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = “egg”, t = “add”
输出:true

示例 2:

输入:s = “foo”, t = “bar”
输出:false

示例 3:

输入:s = “paper”, t = “title”
输出:true

提示:

  • 1 <= s.length <= 5 * 10^4
  • t.length == s.length
  • s 和 t 由任意有效的 ASCII 字符组成

Python代码

class Solution:def isIsomorphic(self, s: str, t: str) -> bool:# 将False情况列举出来即可# 1)判断s串当前i是否是之前没出现的,若是,则t串当前i处的字符肯定也是t中之前没出现的# 2)判断s串当前i是否是之前没出现的,若不是,则判断当前t[i] != t[s之前出现过的下标]n = len(s)for i in range(n):if s[i] not in s[:i]:if t[i] in t[:i]:return Falseelse:if t[i] != t[s[:i].index(s[i])]:return Falsereturn Trueif __name__ == '__main__':s = Solution()a = "badc"b = "baba"print(s.isIsomorphic(a, b))

C++代码(超出内存)

class Solution {
public:bool isIsomorphic(string s, string t) {int n = s.size();for(int i = 0; i < n; i++){if (s.substr(0, i).find(s[i]) == std::string::npos){if (t.substr(0, i).find(t[i]) != std::string::npos) return false;}else {if (t[i] != t[s.substr(0, i).find(s[i])]) return false;}}return true;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

292.【华为OD机试】跳马问题(广度优先搜索(BFS)JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

分布式事务(SeataServer)

SeataServer搭建 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。AT模式是阿里首推的模式,阿里云上有商用版本的GTS(Global Transaction Servi…

JavaScript 闭包 作用域

闭包 JavaScript 中的闭包是相当重要的概念并且与作用域相关知识的指向密切相关 JavaScript 中的作用域是什么意思?闭包会在哪些场景中使用?通过定时器循环输出自增的数字通过 JS 的代码如何实现? 闭包概念一 闭包是指有权访问另外一个函数作用域中的变量的函数。 闭包…

自我对比: 通过不一致的解决视角更好地进行反思

一、写作动机&#xff1a; LLM 在自我评价时往往过于自信或随意性较大&#xff0c;提供的反馈固执或不一致&#xff0c;从而导致反思效果不佳。为了解决这个问题&#xff0c;作者提倡 "自我对比"&#xff1a; 它可以根据要求探索不同的解决角度&#xff0c;对比差异…

ChatGPT如何辅助医生改善AD患者教育的效果

特应性皮炎&#xff08;AD&#xff09;是一种常见的慢性炎症性皮肤病&#xff0c;在全球范围内造成了巨大的疾病负担。尽管在治疗方面取得了一定进展&#xff0c;但AD患者的生活质量较低&#xff0c;治疗满意度差&#xff0c;超过一半的患者认为中度至重度AD疾病控制不佳。AD的…

YOLO快速入门

Yolo简介 概述 YOLO&#xff08;You Only Look Once&#xff09;是一种流行的目标检测算法&#xff0c;由Joseph Redmon等人开发。 YOLO算法以其高效的实时性能和准确的检测能力而闻名。自YOLO的首次提出以来&#xff0c;已经经 历了多个版本的更新和改进。以下是YOLO发展史的…

周边类-找厕所小程序源码

源码获取方式 1&#xff0c;搜一搜 万能工具箱合集 点击资料库 即可进去获取 找厕所小程序源码依赖于腾讯地图的一款源码&#xff0c;腾讯地图api免费申请&#xff0c;是一款免费又永久的不需要服务器的小程序&#xff0c;起个好名字蹭蹭蹭~ 搭建教程&#xff1a; 1、下载源码…

使用css的transition属性实现抽屉功能

需求 使用css手写一个抽屉&#xff0c;并且不能遮挡住原来的页面 效果&#xff1a;&#xff08;录的gif有点卡&#xff0c;实际情况很丝滑&#xff09; 实现代码&#xff1a; <template><div class"dashboard-container"><div class"mainBox&…

Java项目:36 springboot图书个性化推荐系统的设计与实现003

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 springboot003图书个性化推荐系统的设计与实现 管理员&#xff1a;首页、个人中心、学生管理、图书分类管理、图书信息管理、图书预约管理、退…

[element]element-ui框架下载

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&#xff0c;一同进步&#x1f601;…

CSS中画一条0.5px的线

采用transform: scale()的方式&#xff0c;该方法用来定义元素的2D 缩放转换&#xff1a; transform: scale(0.5,0.5); 采用meta viewport的方式 <meta name"viewport" content"widthdevice-width, initial-scale0.5, minimum-scale0.5, maximum-scale0.5…

基于Springboot的足球俱乐部管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的足球俱乐部管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍: 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff…

【Datawhale组队学习:Sora原理与技术实战】Attention和LLM

Attention Attention 注意力&#xff0c;从两个不同的主体开始。 论文&#xff1a;https://arxiv.org/pdf/1703.03906.pdf seq2seq代码仓&#xff1a;https://github.com/google/seq2seq 计算方法&#xff1a; 加性Attention&#xff0c;如&#xff08;Bahdanau attention&…

数据库-ODBC操作

承接Qt/C软件开发项目&#xff0c;高质量交付&#xff0c;灵活沟通&#xff0c;长期维护支持。需求所寻&#xff0c;技术正适&#xff0c;共创完美&#xff0c;欢迎私信联系&#xff01; 一、ODBC 数据源配置 打开ODBC数据源管理器&#xff1a; 在Windows搜索栏中键入“ODBC数…

Flink hello world

下载并且解压Flink Downloads | Apache Flink 启动Flink. $ ./bin/start-cluster.sh Starting cluster. Starting standalonesession daemon on host DESKTOP-T4TU7JE. Starting taskexecutor daemon on host DESKTOP-T4TU7JE. Flink 的版本附带了许多示例作业。您可以快速将…

PyTorch搭建LeNet神经网络

函数的参数 1、PyTorch Tensor的通道排序 [batch, channel, height, width] batch: 要处理的一批图像的个数 channel: 通道数&#xff08;一般是R G B 三个通道&#xff09; height: 图像的高度 width: 图像的宽度 2.Conv 2d 卷积层的参数 [in_channels, out_channels, ke…

Golang 开发实战day01 - Variable String Numeric

Golang 教程01 - Variable String Numeric 1. Go语言的重要性 Go语言&#xff0c;又称Golang&#xff0c;是一种由Google开发的静态编译型编程语言。它于2009年首次发布&#xff0c;并在短短几年内迅速流行起来。Go语言具有以下特点&#xff1a; 语法简单易学&#xff1a;Go…

【牛客】SQL137 第二快/慢用时之差大于试卷时长一半的试卷-窗口函数

描述 现有试卷信息表examination_info&#xff08;exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间&#xff09;&#xff1a; idexam_idtagdifficultydurationrelease_time19001SQLhard602021-09-01 06:00:0029002Chard602021-09-0…

C 运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和…

第一节 JDBC是什么?

JDBC代表Java数据库连接(Java Database Connectivity)&#xff0c;它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API&#xff0c;换句话说&#xff1a;JDBC是用于在Java语言编程中与数据库连接的API。 JDBC库包括通常与数据库使用相关&#xff0c;如下面提到的…