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

LeetCode-524. 通过删除字母匹配到字典里最长单词

1、题目描述:

给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。

如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。

示例 1:

输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]
输出:"apple"

示例 2:

输入:s = "abpcplea", dictionary = ["a","b","c"]
输出:"a"

提示:

  • 1 <= s.length <= 1000
  • 1 <= dictionary.length <= 1000
  • 1 <= dictionary[i].length <= 1000
  • s 和 dictionary[i] 仅由小写英文字母组成

2、代码:

高逼格代码:

class Solution {
public:string findLongestWord(string s, vector<string>& dictionary) {// 定义一个 lambda 表达式 compareStr,用于判断字典中的字符串是否是 s 的子序列auto compareStr = [&](const string& s, const string& dic) -> bool {int i = 0, j = 0; // i 遍历 s,j 遍历 dicwhile (i < s.size() && j < dic.size()) { // 双指针遍历两个字符串if (s[i] == dic[j]) { // 如果字符匹配,移动 dic 的指针++j;}++i; // 始终移动 s 的指针}return j == dic.size(); // 如果 dic 被完全匹配,返回 true};// 对字典进行排序:优先按长度降序排列,如果长度相同则按字典序升序排列sort(dictionary.begin(), dictionary.end(),[](const string& a, const string& b) {return (a.size() == b.size()) ? (a < b) : (a.size() > b.size());});// 遍历排序后的字典,找到第一个符合条件的字符串for (auto str : dictionary) {if (compareStr(s, str)) { // 如果当前字符串是 s 的子序列return str; // 返回该字符串}}// 如果没有找到符合条件的字符串,返回空字符串return "";}
};

普通代码 :

class Solution {
public:// 判断字典中的字符串 dictionary 是否是字符串 s 的子序列bool compareStr(const string& s, const string& dictionary) {int i = 0, j = 0; // i 遍历 s,j 遍历 dictionarywhile (i < s.size() && j < dictionary.size()) { // 双指针遍历两个字符串if (s[i] == dictionary[j]) { // 如果字符匹配,移动 dictionary 的指针++j;}++i; // 始终移动 s 的指针}return j == dictionary.size(); // 如果 dictionary 被完全匹配,返回 true}// 主函数:从字典中找到最长且符合条件的字符串string findLongestWord(string s, vector<string>& dictionary) {// 如果字符串 s 为空,直接返回空字符串(题目保证 s 不为空,此检查可省略)if (s == "") {return "";}// 对字典进行排序:优先按长度降序排列,如果长度相同则按字典序升序排列sort(dictionary.begin(), dictionary.end(),[](const string& a, const string& b) {if (a.size() != b.size()) // 如果长度不同,按长度降序排列return a.size() > b.size();return a < b; // 如果长度相同,按字典序升序排列});// 遍历排序后的字典,找到第一个符合条件的字符串for (auto str : dictionary) {if (compareStr(s, str)) { // 如果当前字符串是 s 的子序列return str; // 返回该字符串}}// 如果没有找到符合条件的字符串,返回空字符串return "";}
};

3、解题思路:

1.判断子序列

这是一个双指针的问题,双指针应用在哪呢?就是用在辅助函数里,来判断某个字符串是否是另一个字符串的子序列,具体方法是使用双指针,分别遍历 s 和目标字符串 dictionary,检查 dictionary是否可以通过删除 s 的某些字符得到。

2. 优化排序

为了方便比较长度和字典序,可以先对字典进行排序:优先按长度降序排列,如果长度相同则按字典序升序排列。

3. 筛选符合条件的字符串:

因为前面已经将字典进行排序,而且字典优先按长度降序排列,如果长度相同则按字典序升序排列。也就是说,第一个找到的字符串就是最符合要求的答案

相关文章:

LeetCode-524. 通过删除字母匹配到字典里最长单词

1、题目描述&#xff1a; 给你一个字符串 s 和一个字符串数组 dictionary &#xff0c;找出并返回 dictionary 中最长的字符串&#xff0c;该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个&#xff0c;返回长度最长且字母序最小的字符串。如果答案不存在&#x…...

浅谈网络 | 容器网络之Cilium

目录 Cilium介绍Cilium是什么Cilium 主要功能特性为什么用Cilium&#xff1f; 功能概述组件概况BPF 与 XDPeBPF (Extended Berkeley Packet Filter)XDP (eXpress Data Path) Cilium介绍 Cilium是什么 Cilium 是一个开源网络和安全项目&#xff0c;专为 Kubernetes、Docker 和…...

armv7l

在 **ARMv7l** 中&#xff0c;最后的字符是字母 **“l”**&#xff08;小写字母 “L”&#xff09;&#xff0c;而不是数字 **“1”**。 --- ### 1. **ARMv7l 的含义** - **ARMv7**&#xff1a;指的是 **ARM 架构的第 7 代版本**&#xff0c;是一种广泛应用于嵌入式系统&…...

从零开始构建一个小型字符级语言模型的完整详细教程(基于Transformer架构)

最近特别火的DeepSeek,是一个大语言模型,那一个模型是如何构建起来的呢?DeepSeek基于Transformer架构,接下来我们也从零开始构建一个基于Transformer架构的小型语言模型,并说明构建的详细步骤及内部组件说明。我们以构建一个字符级语言模型(Char-Level LM)为例,目标是通…...

期权帮|股指期货交割日为啥会大跌?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 股指期货交割日为啥会大跌&#xff1f; 股指期货交割日股市可能会大跌&#xff0c;主要原因有以下几点&#xff1a; 1.交割日时多空双方需要平仓或转仓&#xff0c;若多头急于平仓…...

B树和B+树

1. B树 1.1 定义 B树是一种多路平衡查找树&#xff0c;具有以下性质&#xff1a; 每个节点最多包含 m 个子节点&#xff08;m 阶 B树&#xff09;。 根节点至少有两个子节点&#xff08;除非它是叶子节点&#xff09;。 每个内部节点&#xff08;非根和非叶子节点&#xff…...

分布式事务核心理论:CAP与BASE

一、引言&#xff1a;分布式系统的挑战 在互联网应用中&#xff0c;随着业务规模的扩大&#xff0c;单机数据库已无法满足高并发和海量数据存储需求。分布式系统将数据拆分到不同节点&#xff0c;但随之带来了数据一致性的难题。CAP与BASE理论为分布式事务提供了重要的设计指导…...

【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记

本文内容为重写上一节课中的单链表&#xff0c;将其重构成更易于用户使用的链表&#xff0c;实现多种操作链表的方法。 1. 重构单链表SLList 在上一节课中编写的 IntList 类是裸露递归的形式&#xff0c;在 Java 中一般不会这么定义&#xff0c;因为这样用户可能需要非常了解…...

记录一个ES分词器不生效的解决过程

问题背景 商城项目,其中商品查询检索使用的是ES, 但存在某些商品查询不到的问题 例如:某商品名包含AA_BBB这样的关键词,但是搜索"AA"不能查询到该商品,但是将商品名修改为AA BBB后就能查询到了. 怀疑是分词的问题,但看代码,在创建ES索引时在对应字段上也定义了分词器…...

Jeecg+vue3去掉JInput组件默认模糊查询的配置方式

遇见的问题&#xff1a;input查询带**号 情况1、使用schemas配置的表单项 添加type""属性&#xff0c;默认type为like&#xff0c;去掉模糊则配置为空 文档链接 jeecg文档说明JInput 2、直接调用组件则在属性上直接添加type""属性...

Could not initialize class io.netty.util.internal.Platfor...

异常信息&#xff1a; Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.PlatformDependent0 Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.reflect.InaccessibleObjec…...

什么是业务流程分类框架

业务流程分类框架是一个用于组织和系统化地分类业务流程的结构化方法。它旨在帮助企业理解、管理、分析和改进其运营流程。 可以把它想象成一个图书馆的图书分类系统&#xff0c;帮助快速找到和理解不同类型的书籍。对于业务流程来说&#xff0c;分类框架帮助快速了解不同类型的…...

向量的点乘的几何意义

源自AI 向量的点乘&#xff08;Dot Product&#xff09;在几何和图形学中有重要的意义。它不仅是数学运算&#xff0c;还可以用来描述向量之间的关系。以下是点乘的几何意义及其应用&#xff1a; 1. 点乘的定义 对于两个向量 a 和 b&#xff0c;它们的点乘定义为&#xff1a;…...

达梦数据库应用开发_JDBC接口介绍_yxy

达梦数据库应用开发_JDBC接口介绍 1 JDBC是什么&#xff1f;2 JDBC主要类或接口介绍2.1 建立与 DM 数据库的连接2.2 转接发送 SQL 语句到数据库2.3 处理并返回语句执行结果 3 JDBC基本使用3.1 前期准备3.2 增删改查代码示例3.3 绑定变量操作示例3.4 大字段操作示例 1 JDBC是什么…...

在ubuntu上用Python的openpyxl模块操作Excel的案例

文章目录 安装模块读取Excel数据库取数匹配数据和更新Excel数据 在Ubuntu系统的环境下基本职能借助Python的openpyxl模块实现对Excel数据的操作。 安装模块 本次需要用到的模块需要提前安装(如果没有的话) pip3 install openpyxl pip3 install pymysql在操作前&#xff0c;需…...

RabbitMQ介绍以及基本使用

文章目录 一、什么是消息队列&#xff1f; 二、消息队列的作用&#xff08;优点&#xff09; 1、解耦 2、流量削峰 3、异步 4、顺序性 三、RabbitMQ基本结构 四、RabbitMQ队列模式 1、简单队列模式 2、工作队列模式 3、发布/订阅模式 4、路由模式 5、主题模式 6、…...

搭建 Hadoop 3.3.6 伪分布式

搭建 Hadoop 3.3.6 伪分布式 IP 192.168.157.132 初始化操作 更改yum源 # 1_1.安装Wget yum install wget# 1_2.备份CentOS-Base.repo文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak# 2.下载阿里yum源配置 wget -O /etc/yum.repos.d/Cen…...

进程控制(靠原语实现)

什么是进程控制&#xff1f; 进程控制的主要功能是&#xff1a;对系统中的所有进程实施有效管理&#xff0c;它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简化理解&#xff1a;进程控制就是要实现进程状态转换。 知识一览&#xff1a; 如何实现进程控制&#…...

linux5-多任务--进程fork()

一.多任务&#xff1a;让系统具备同时处理多个任务的能力 1.如何实现多任务 1.1进程&#xff1a;操作系统上正在运行的程序&#xff0c;需要消耗内存和CPU 1.1.1 进程的生存周期&#xff1a;创建、调度、消亡 1.1.1.1进程的创建&#xff1a;每个进程被创建时&#xff0c;操作…...

【蓝桥】二分法

1、简介 1.1 定义&#xff1a; 通过将问题的搜索范围一分为二&#xff0c;迭代地缩小搜索范围&#xff0c;直到找到目标或确定目标不存在 1.2 适用&#xff1a; 有序数据集合&#xff0c;且每次迭代可以将搜索范围缩小一半 1.3 本质&#xff1a; 枚举&#xff1a;利用数据结构…...

linux查看程序占用的本地端口

ss是Socket Statistics的缩写&#xff0c;用来替代旧的netstat工具&#xff0c;功能更强大&#xff0c;执行更快。它用于查看系统的网络连接情况&#xff0c;包括TCP、UDP等协议的信息。 一. 命令解析&#xff1a; sudo ss -tulwnpss (Socket Statistics)&#xff1a;替代 ne…...

统计函数运行时间的python脚本

这是一个统计函数运行时间的实用脚本&#xff0c;其中用到了函数的嵌套、链式传输参数&#xff0c;以及修饰器。 import time# 定义一个装饰器timer&#xff0c;用于计算被装饰函数的运行时间 def timer(func):print("执行了timer")def wrapper(*args, **kwargs):st…...

百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元

在当今数字化时代&#xff0c;搜索引擎作为互联网信息获取的核心工具&#xff0c;正经历着前所未有的变革。据悉&#xff0c;2025年2月16日&#xff0c;百度搜索和文心智能体平台宣布全面接入DeepSeek和文心大模型的最新深度搜索功能&#xff0c;搜索用户可免费使用DeepSeek和文…...

快速入门Springboot+vue——MybatisPlus快速上手

学习自哔哩哔哩上的“刘老师教编程”&#xff0c;具体学习的网站为&#xff1a;6.MybatisPlus快速上手_哔哩哔哩_bilibili&#xff0c;以下是看课后做的笔记&#xff0c;仅供参考。 第一节 ORM介绍 ORM对象关系映射&#xff0c;为了解决面向对象与关系数据库存在的互补匹配现象…...

在C#中动态访问对象属性时,用表达式树可以获得高效性能

在C#中如何用表达式树动态访问对象属性的问题。用户可能已经知道反射的基本用法&#xff0c;但想用表达式树来提高性能&#xff0c;因为表达式树编译后的委托执行速度比反射快。 首先&#xff0c;表达式树的基本概念。表达式树允许在运行时构建代码&#xff0c;并编译成可执行的…...

性能:React 实战优化技巧 之 函数闭包

子组件使用了 React.memo &#xff0c;为什么 “prop 值未发生改变”&#xff0c;子组件依然被重新渲染了&#xff1f; &#x1f6a7; 示例&#xff1a;点击子组件中按钮&#xff0c;获取 input 数据进行提交&#xff08;常见于表单&#xff09; index.tsx import Author f…...

蓝桥杯学习大纲

&#xff08;致酷德与热爱算法、编程的小伙伴们&#xff09; 在查阅了相当多的资料后&#xff0c;发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以&#xff0c;干脆自己整理一篇&#xff0c;欢迎大家补充&#xff01; 一、蓝桥必备高频考点 我们以此为重点学习…...

Windows11切换回Windows10风格右键菜单

参考文章&#xff1a;Win11新版右键菜单用不惯&#xff1f;一键切换回Win10经典版&#xff01;-CSDN博客 以管理员权限运行命令行cmd 切换为经典旧版右键菜单&#xff0c;执行 reg.exe add “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServe…...

Python 爬虫selenium

1.selenium自动化 selenium可以操作浏览器&#xff0c;在浏览器页面上实现&#xff1a;点击、输入、滑动 等操作。 不同于selenium自动化&#xff0c;逆向本质是&#xff1a; 分析请求&#xff0c;例如&#xff1a;请求方法、请求参数、加密方式等。用代码模拟请求去实现同等…...

Linux常用操作

软件安装 CentOS系统使用: yum [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y,自动确认 Ubuntu系统使用 apt [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y,自动确认 yum 和 apt 均需要root权限 syste…...

Note25022001_Excel表格如何在文字的中间或者后边插入当前日期

Excel表格如何在文字的中间或者后边插入当前日期 关键字&#xff1a; EXCEL&#xff1b;当前日期&#xff1b;文字中间 如图所示&#xff1a; 其中一种实现方法如下&#xff1a; 打开表格&#xff0c;在某一个表格中输入&#xff1a; "项目计划管理表&#xff08;厂内&…...

Django5 实用指南(四)URL路由与视图函数

4.1 Django5的URL路由系统 Django 的 URL 路由系统是其核心组件之一&#xff0c;它负责将用户的 HTTP 请求&#xff08;即 URL&#xff09;映射到相应的视图函数上。每当用户在浏览器中访问某个 URL 时&#xff0c;Django 会根据项目的 URL 配置文件&#xff08;urls.py&#…...

Unity3D 基于 GPU 动画和 Compute Shader 的大批量动画渲染详解

引言 在现代游戏开发中&#xff0c;渲染大量动画角色是一个常见的需求&#xff0c;尤其是在大规模战斗场景、开放世界游戏或 VR/AR 应用中。传统的 CPU 动画计算和渲染方式在面对大批量角色时&#xff0c;往往会遇到性能瓶颈。为了优化性能&#xff0c;开发者可以利用 GPU 的强…...

遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…...

什么是DeFi (去中心化金融)

DeFi (去中心化金融) 概述 &#x1f4b0; 1. DeFi 基础概念 1.1 什么是 DeFi&#xff1f; DeFi 是建立在区块链上的金融服务生态系统&#xff0c;它&#xff1a; 无需中心化中介开放且透明无需许可即可参与代码即法律 1.2 DeFi 的优势 开放性&#xff1a;任何人都可以参与…...

深入解析 sudo -l 命令的输出内容

在 Linux 系统中&#xff0c;sudo 命令允许普通用户以超级用户&#xff08;root&#xff09;权限执行命令。sudo -l 命令用于查看当前用户在 sudoers 配置文件中的权限&#xff0c;以及与 sudo 相关的安全策略。本文将详细解析 sudo -l 输出的各个部分&#xff0c;包括 用户权限…...

DeepSeek 助力 Vue 开发:打造丝滑的瀑布流布局(Masonry Layout)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

linux学习【7】Sourc Insight 4.0设置+操作

目录 1.Source Insight是什么&#xff1f;2.需要哪些配置&#xff1f;3.怎么新建项目4.一些问题的解决1.中文乱码问题 按照这个设置就可以了&#xff0c;下面的设置会标明设置理由。 1.Source Insight是什么&#xff1f; 阅读源码&#xff0c;编辑源码&#xff0c;不能编译&am…...

OpenCV形态学操作

1.1. 形态学操作介绍 初识&#xff1a; 形态学操作是一种基于图像形状的处理方法&#xff0c;主要用于分析和处理图像中的几何结构。其核心是通过结构元素&#xff08;卷积核&#xff09;对图像进行扫描和操作&#xff0c;从而改变图像的形状和特征。例如&#xff1a; 腐蚀&…...

使用Python中的`gensim`库构建LDA(Latent Dirichlet Allocation)模型来分析收集到的评论

下面为你详细介绍如何使用Python中的gensim库构建LDA&#xff08;Latent Dirichlet Allocation&#xff09;模型来分析收集到的评论。LDA是一种主题模型&#xff0c;它可以将文档集合中的文本按照主题进行分类。 步骤概述 数据预处理&#xff1a;对收集到的评论进行清洗、分词…...

【STM32】外部时钟|红外反射光电开关

1.外部时钟 单片机如何对外部触发进行计数&#xff1f;先看一下内部时钟&#xff0c;内部时钟是接在APB1和APB2时钟线上的&#xff0c;APB1,APB2来自stm32单片机内部的脉冲信号&#xff0c;也叫内部时钟。我们用来定时。同样我们可以把外部的信号接入单片机&#xff0c;来对其…...

Visual Studio Code 集成 Baidu Comate

文章目录 安装Baidu Comate插件 安装Baidu Comate插件 从左主侧栏中 点击 【扩展】这个图标&#xff0c;然后在上方输入栏中输入 baidu comate —>选中列出的Bai Comate —>点击 【安装】按钮&#xff0c;等待安装完毕…...

数据结构者

数据&#xff08;data&#xff09;&#xff1a;可被计算机接受处理的符号总称 数据元素&#xff08;data element&#xff09;&#xff1a;数据的基本单位&#xff0c;常作为一个整体进行考虑和处理 一个数据元素可以由若干个数据项&#xff08;data item&#xff09;组成 数…...

论文阅读 DOES END-TO-END AUTONOMOUS DRIVING REALLY NEED PERCEPTION TASKS?

端到端的强势来袭&#xff0c;好久了~~~ 简单翻译&#xff1a;端到端真的需要感知任务嘛&#xff1f; code https://github.com/PeidongLi/SSR. https://arxiv.org/pdf/2409.18341 1. 摘要 端到端自动驾驶&#xff08;E2EAD&#xff09;方法通常依赖于监督式感知任务来提取显…...

总结UML类图几种关系画法

最近在公司需要画类图&#xff0c;有些遗忘&#xff0c;于是重新学习并并总结了一下&#xff1a; 继承&#xff1a;实线空心三角箭头。A继承B&#xff0c;A指向B。A是一种B。实现&#xff1a;虚线空心三角箭头。A实现B&#xff0c;A指向B。A实现B接口。关联&#xff1a;实线普…...

python-leetcode 40.二叉树的层序遍历

题目&#xff1a; 给定二叉树的根节点root,返回其节点值得层序遍历&#xff08;即逐层从左到右访问所有节点&#xff09; 方法&#xff1a;广度优先搜索 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val0, leftNone, rightNon…...

安利:外文文献翻译插件

沉浸式翻译 好用吹爆&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 任务 2.谷歌学术 复制外文的标题搜索 3.进入文献所在&#xff0c;登录对应机构 4.可以看到都翻译好了 5.然后复制到文档&#xff0c;改改格式巴…...

Python——生成AIGC图像

文章目录 一、背景介绍 二、效果图展示 三、完整代码 四、分步解释 五、实用建议 1&#xff09;提示词技巧 2&#xff09;性能优化 3&#xff09;常见问题处理 4&#xff09;扩展功能建议 六、注意事项 1. 硬件要求 2. 法律合规 3. 模型安全 一、背景介绍 AIGC&a…...

OpenGL(2)基于Qt做OpenGL开发

文章目录 一、基于Qt做OpenGL开发1、环境准备2、创建OpenGL窗口3、绘制基本图形 一、基于Qt做OpenGL开发 1、环境准备 确保你已经安装了 Qt 开发环境&#xff08;包含 Qt Creator&#xff09;&#xff0c;并且支持 OpenGL 开发。在创建 Qt 项目时&#xff0c;选择 “Qt Widget…...

【Windows软件 - HeidiSQL】导出数据库

HeidSQL导出数据库 软件信息 具体操作 示例文件 选项分析 选项&#xff08;1&#xff09; 结果&#xff08;1&#xff09; -- -------------------------------------------------------- -- 主机: 127.0.0.1 -- 服务器版本: …...