力扣每日一题 6/17 枚举+双指针

  • 博客主页:誓则盟约
  • 系列专栏:IT竞赛 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍ 

522.最长特殊序列II【中等

题目:

给定字符串列表 strs ,返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在,返回 -1 。

特殊序列 定义如下:该序列为某字符串 独有的子序列(即不能是其他字符串的子序列)

 s 的 子序列可以通过删去字符串 s 中的某些字符实现。

  • 例如,"abc" 是 "aebdc" 的子序列,因为您可以删除"aebdc"中的下划线字符来得到 "abc" 。"aebdc"的子序列还包括"aebdc"、 "aeb" 和 "" (空字符串)。

示例 1:

输入: strs = ["aba","cdc","eae"]
输出: 3

示例 2:

输入: strs = ["aaa","aaa","aa"]
输出: -1

 

提示:

  • 2 <= strs.length <= 50
  • 1 <= strs[i].length <= 10
  • strs[i] 只包含小写英文字母

分析问题:

        这道题和昨天的那道题其实一个意思,不过这道题多了个制约条件,他要求在数组里面的值都不能被含有子序列,那我们的初步思路就是先给这个数组按照元素的长度进行一个排序,然后从长到短的遍历,一旦枚举到符合要求的字符串,就立刻返回其长度。如果没有符合要求的字符串,返回 −1。

代码实现:

class Solution:def findLUSlength(self, strs: List[str]) -> int:# 判断 s 是否为 t 的子序列def is_subseq(s: str, t: str) -> bool:i = 0for c in t:if s[i] == c:i += 1if i == len(s):  # 所有字符匹配完毕return True  # s 是 t 的子序列return Falsestrs.sort(key=lambda s: -len(s))for i, s in enumerate(strs):if all(j == i or not is_subseq(s, t) for j, t in enumerate(strs)):return len(s)return -1


 

总结:

        首先,定义了一个名为 Solution 的类,其中包含一个名为 findLUSlength 的方法,该方法接受一个字符串列表 strs 作为参数。在这个方法内部,又定义了一个名为 is_subseq 的函数,用于判断一个字符串 s 是否为另一个字符串 t 的子序列。

        在 is_subseq 函数中,使用一个索引 i 来遍历字符串 s 。然后通过遍历字符串 t 中的每个字符。当 t 中的字符与 s 中当前索引 i 所指向的字符相同时,就将索引 i 向后移动一位。如果在遍历完 t 之后,索引 i 已经到达了 s 的末尾,那就说明 s 是 t 的子序列,此时函数返回 True ;否则返回 False 。

        回到 findLUSlength 方法,首先使用 lambda 函数根据字符串的长度对 strs 列表进行降序排序。

        然后通过一个循环遍历排序后的 strs 列表。对于每个字符串 s ,再通过一个内层的循环遍历整个 strs 列表。通过条件判断来检查当前的字符串 s 是否为其他字符串的子序列。如果对于所有的索引 j (除了当前索引 i ),s 都不是字符串 t 的子序列,那就说明 s 不是其他字符串的子序列,此时返回 s 的长度。

        如果遍历完整个 strs 列表都没有找到这样的字符串,就返回 -1 。

考了什么

  1. 函数定义:定义了一个判断字符串 s 是否为字符串 t 子序列的函数 is_subseq 。
  2. 列表排序:使用 lambda 函数对字符串列表 strs 按照字符串长度降序排序。
  3. 循环和条件判断:通过两层循环和条件判断来找出列表中不为其他字符串子序列的字符串,并返回其长度。

学会了什么

  1. 学会了如何定义一个具有特定功能的辅助函数来解决复杂问题中的子问题,例如这里的判断子序列函数。
  2. 掌握了对列表进行自定义排序的方法,通过 lambda 函数指定排序规则。
  3. 提升了通过循环和条件判断来处理复杂逻辑的能力,例如在多个字符串中找出满足特定条件的字符串。

“悲剧,是把美好的东西毁灭给人看。” ——《骆驼祥子》

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

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

相关文章

【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试

使用 stress 对CPU进行压力测试 我也是一个ubuntu初学者&#xff0c;分享是Linux的优良美德。写的不好请大佬不要喷&#xff0c;多谢支持。 sudo apt-get update 日常先更新再安装东西不容易出错 sudo apt-get upgrade -y 继续升级一波 sudo apt-get install -y linux-tools…

Stable Diffusion文生图模型训练入门实战(完整代码)

Stable Diffusion 1.5&#xff08;SD1.5&#xff09;是由Stability AI在2022年8月22日开源的文生图模型&#xff0c;是SD最经典也是社区最活跃的模型之一。 以SD1.5作为预训练模型&#xff0c;在火影忍者数据集上微调一个火影风格的文生图模型&#xff08;非Lora方式&#xff…

Python | Leetcode Python题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; class Solution:def findPeakElement(self, nums: List[int]) -> int:n len(nums)# 辅助函数&#xff0c;输入下标 i&#xff0c;返回 nums[i] 的值# 方便处理 nums[-1] 以及 nums[n] 的边界情况def get(i: int) -> int:if i -1 or…

数实融合创新发展 隆道分享企业级AI应用

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着各行各业&#xff0c;重塑企业的运营管理模式和创新发展路径。6月14日&#xff0c;数实融合全国行&#xff08;潍坊站&#xff09;暨 AI 企业级应用专题会在山东潍坊成功召开。…

STM32单片机DMA存储器详解

文章目录 1. DMA概述 2. 存储器映像 3. DMA框架图 4. DMA请求 5. 数据宽度与对齐 6. DMA数据转运 7. ADC扫描模式和DMA 8. 代码示例 1. DMA概述 DMA&#xff08;Direct Memory Access&#xff09;可以直接访问STM32内部的存储器&#xff0c;DMA是一种技术&#xff0c;…

【随性】学习感想

这几天的作息时间&#xff1a;13:00-23:00&#xff0c;稍显疲惫。为了继续调整作战&#xff0c;明天改变生物钟&#xff0c;尝试新作息时间&#xff1a;9:00-20:00&#xff01;最近已经学完了C与QT&#xff0c;又重回Linux的怀抱&#xff0c;以下为适应Linux下C编程的代码&…

【 ARMv8/ARMv9 硬件加速系列 3.5.1 -- SVE 谓词寄存器有多少位?】

文章目录 SVE 谓词寄存器(predicate registers)简介SVE 谓词寄存器的位数SVE 谓词寄存器对向量寄存器的控制SVE 谓词寄存器位数计算SVE 谓词寄存器小结SVE 谓词寄存器(predicate registers)简介 ARMv9的Scalable Vector Extension (SVE) 引入了谓词寄存器(Predicate Register…

打造工业操作系统开源开放体系

我国制造业具有细分行业、领域众多&#xff0c;产品丰富&#xff0c;制造模式多样等特点&#xff0c;围绕以工业操作系统为核心的工业软件赋能体系建设&#xff0c;离不开平台运营商、工业软件开发商、系统服务商、科研机构、工业企业等多方联合参与。聚众同行、聚力创新&#…

【数据库系统概论复习】关系数据库与关系代数笔记

文章目录 基本概念数据库基本概念关系数据结构完整性约束 关系代数关系代数练习课堂练习 语法树 基本概念 数据库基本概念 DB 数据库&#xff0c; 为了存用户的各种数据&#xff0c;我们要建很多关系&#xff08;二维表&#xff09;&#xff0c;所以把相关的关系&#xff08;二…

创建型模式--抽象工厂模式

产品族创建–抽象工厂模式 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题。 但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,可以考虑将一些相关的产品组成一个“产品族”,…

Java基础16(集合 List)

目录 一、什么是集合&#xff1f; 二、集合接口 三、List集合 1. ArrayList容器类 1.1 常用方法 1.1.1 增加 1.1.2 查找 int size() E get(int index) int indexOf(Object c) boolean contains(Object c) boolean isEmpty() List SubList(int fromindex,i…

运行SpringBoot项目失败?代码出现爆红横线,提示“No beans of ‘UserService‘ type found”让我来看看~

今天在做实验运行项目的时候&#xff0c;发现userService&#xff1a; 一直在提示“No beans of UserService type found”&#xff0c;回去翻了Service业务层的代码&#xff0c;Service注解我也加了呀&#xff0c;奇了怪了。 运行项目&#xff0c;出现了这样的提示&#xff1…

求最小公倍数 、小球走过路程计算 题目

题目 JAVA11 求最小公倍数分析&#xff1a;代码&#xff1a;大佬代码&#xff1a; JAVA12 小球走过路程计算分析&#xff1a;代码&#xff1a; JAVA11 求最小公倍数 描述 编写一个方法&#xff0c;该方法的返回值是两个不大于100的正整数的最小公倍数。 输入描述&#xff1a;…

向mysql发送一个请求的时候,mysql到底做了什么

当 MySQL 接收到一个请求时,它会经过多个步骤来处理该请求,具体包括解析、优化、执行以及返回结果。这一过程涉及 MySQL 的多个组件和机制。 1. 客户端/服务器通信 当客户端发送一个请求到 MySQL 服务器时,通信是通过 TCP/IP 协议、Unix 套接字或其他支持的协议进行的。 …

immich上传库中删除本地照片后前台页面仍显示照片的问题解决方法

最近用了immich来管理照片&#xff0c;感觉很好用。 由于刚上手不了解使用方法&#xff0c;遇到了在上传库&#xff08;upload库&#xff09;删除本地照片后前台页面仍显示照片的问题。看了官方文档后有了解决方法&#xff0c;遂进行记录。 事件背景&#xff1a; immich有两…

LeetCode 310 最小高度树

题目信息 LeetoCode地址: . - 力扣&#xff08;LeetCode&#xff09; 题目理解 可以通过归纳法证明出一棵树的最小高度树可以通过从最外面度为1的叶子节点一层一层向内遍历得到&#xff0c;可以使用一种称为 **中心缩减法**&#xff08;或称为 **剥洋葱法**&#xff09;的方…

StarRocks分区表历史数据删除与管理

一、背景介绍 在使用 StarRocks 时&#xff0c;可能会遇到需要删除大批量数据的情况。然而&#xff0c;StarRocks 对 DELETE 操作的支持并不理想&#xff0c;主要存在以下问题&#xff1a; 不建议执行高频的 DELETE 操作&#xff1a;删除的数据会标记为“Deleted”&#xff0…

判断一组数据哪些是素数,并统计一个数组中元素的出现频率

import java.util.HashMap; import java.util.Map; public class Test_A26 {//判断一个数是不是素数public static boolean isPrime(int num){if(num<1){return false;}for(int i2;i<Math.sqrt(num);i){if(num%i0){return false;}}return true;}//统计数组中出现的频率 p…

python安装目录文件说明----Dlls文件夹

在Python的安装目录下&#xff0c;通常会有一个DLLs文件夹&#xff0c;它是Python标准库的一部分。这个文件夹包含了一些动态链接库&#xff08;Dynamic Link Libraries&#xff0c;DLL&#xff09;&#xff0c;这些库提供了Python解释器和标准库的一些关键功能。以下是对这个文…

模拟自动滚动并展开所有评论列表以及回复内容(如:抖音、b站等平台)

由于各大视频平台的回复内容排序不都是按照时间顺序&#xff0c;而且想看最新的评论回复讨论内容还需逐个点击展开&#xff0c;真的很蛋疼&#xff0c;尤其是热评很多的情况&#xff0c;还需要多次点击展开&#xff0c;太麻烦&#xff01; 于是写了一个自动化展开所有评论回复…