2707. 字符串中的额外字符

牛客网:https://leetcode.cn/problems/extra-characters-in-a-string/description/?envType=daily-question&envId=2024-01-09
在这里插入图片描述

官方解题思路为动态规划或字典数优化;
这里引入Up主的解题思路(递归)

哔哩哔哩:https://www.bilibili.com/video/BV1Ee41127LX/?spm_id_from=333.337.search-card.all.click&vd_source=f385259e95f72c4536cc27a3528bd922

Up主采用python3代码过题:

class Solution:def minExtraChar(self, s: str, dictionary: List[str]) -> int:@cachedef dfs(start):if start == len(s):return 0result = dfs(start + 1) + 1for end in range(start, len(s)):word = s[start: end + 1]if word not in dictionary:continueresult = min(result, dfs(end + 1))return resultreturn dfs(0)

细看思路很简单,递归查找并比较所留最少字符的答案;
基于此思路,开启了Go语言的模仿:
第一反应,按照Up主的思路,直接dfs递归查找,结果当场TLE,debug发现,在回溯每个dfs,都会查找一次重复数据,于是开始剪枝优化

func minExtraChar(s string, dictionary []string) int {var dfs func(start int) intdfs = func(start int) int {if start == len(s) {return 0}result := dfs(start+1) + 1for end := start; end < len(s); end++ {word := s[start : end+1]for _, dic := range dictionary {if word != dic {continue}result = min(result, dfs(end+1))}}return result}return dfs(0)
}

AC代码:

func minExtraChar(s string, dictionary []string) int {cache := make(map[int]int)var dfs func(int) intdfs = func(start int) int {if start == len(s) {return 0}if val, ok := cache[start]; ok {return val}result := dfs(start+1) + 1for end := start; end < len(s); end++ {word := s[start : end+1]found := falsefor _, w := range dictionary {if word == w {found = truebreak}}if !found {continue}result = min(result, dfs(end+1))}cache[start] = resultreturn result}return dfs(0)
}func min(a, b int) int {if a < b {return a}return b
}

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

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

相关文章

【计算机网络】TCP原理 | 可靠性机制分析(二)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; T…

Python异步编程|PySimpleGUI界面读取PDF转换Excel

目录 实例要求 原始pdf文件格式 输出xls文件格式 运行界面 完整代码 代码分析 遍历表格 布局界面 控件简介 写入表格 表格排序 事件循环 异步编程 实例要求 使用PySimpleGUI做一个把单位考勤系统导出的pdf文件合并输出Excel的应用&#xff0c;故事出自&#xff1…

UGUI Button 退出应用或退出编辑器当前运行状态

代码退出当前编辑器运行状态测试正常。 Unity3d引擎版本&#xff1a;Uinty3d 20233.2.3f1 脚本代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class btnCloseScript : MonoBeh…

CDN的介绍以及加速内容传输原理

目前在公司的开发过程中&#xff0c;发现很多存储在oss的静态资源&#xff08;图片&#xff0c;安装包&#xff09;的链接中域名都使用了cdn域名&#xff0c;后面了解到这个cdn域名的主要作用是加速资源的访问&#xff0c;于是抽空了解了一下CDN加速原理。 目前使用得比较多的是…

Python多线程同步

同步条件(Event) 在Python中&#xff0c;多线程同步可以通过threading模块中的Event对象来实现。Event对象允许一个或多个线程等待某个事件的发生&#xff0c;当事件发生时&#xff0c;等待的线程将被唤醒。 event.isSet()&#xff1a;返回event的状态值 event.wait()&#x…

PyQt5-小总结

之前学习PyQt5&#xff0c;然后那段时间想做一个桌面小程序&#xff0c;后来由于学习内容较多就做了一小部分&#xff0c;但是可以进行页面跳转。大家如果是初学者对Python感兴趣而且刚学数据库时可以看看代码&#xff0c;可能会有点启发。 效果&#xff1a; 登录进来是这&…

FreeRTOS学习——任务通知

一、什么是任务通知 FreeRTOS 从版本 V8.2.0 开始提供任务通知这个功能&#xff0c;每个任务都有一个 32 位的通知值。按照 FreeRTOS 官方的说法&#xff0c;使用消息通知比通过二进制信号量方式解除阻塞任务快 45%&#xff0c; 并且更加省内存&#xff08;无需创建队 列&#…

解析游戏开发中的ECS设计模式:实体、组件、系统的完美协同

ECS&#xff08;Entity-Component-System&#xff09;是一种设计模式&#xff0c;通常用于构建和管理具有大量实体和复杂交互的系统&#xff0c;尤其在游戏开发中得到广泛应用。这个模式的核心思想是将系统中的组件、实体和系统进行分离&#xff0c;以提高代码的可维护性、可扩…

vue element plus 快速开始

本节将介绍如何在项目中使用 Element Plus。 用法# 完整引入# 如果你对打包后的文件大小不是很在乎&#xff0c;那么使用完整导入会更方便。 // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import A…

Java线程池七个参数详解

前言 直接点题 核心线程数 - corePoolSize 最大线程数 - maximumPoolSize 空闲线程存活时间 - keepAliveTime 存活时间单位 - unit 任务队列 - workQueue 线程工厂 - threadFactory 拒绝策略- handler 概念 什么是池&#xff1f; 池&#xff08;Pool&#xff09;&…

haiku实现门控多头注意力模块

在多头注意力机制中&#xff0c;通常输入的数据包括查询&#xff08;Q&#xff09;、键&#xff08;K&#xff09;和值&#xff08;V&#xff09;。这些数据的维度以及权重矩阵的维度在多头注意力机制中扮演关键角色。下面对数据及权重的维度进行解释&#xff1a; 输入数据&…

鸿蒙原生应用/元服务开发-长时任务

概述 功能介绍 应用退至后台后&#xff0c;对于在后台需要长时间运行用户可感知的任务&#xff0c;例如播放音乐、导航等。为防止应用进程被挂起&#xff0c;导致对应功能异常&#xff0c;可以申请长时任务&#xff0c;使应用在后台长时间运行。申请长时任务后&#xff0c;系统…

Linux调试------gdb的使用

目录 前言 一、gdb打开可执行程序 二、查看代码与操作断点 1.l 查看代码 2.b 打断点 3.info b 查看断点信息 4.d 删除断点 5.disable 和 enable 断点的禁用与启用 三、调试 1.r 启动调试 2. n 逐过程 3. s 逐语句 4.display显示变量 5.undisplay 取消显…

e2studio开发磁力计LIS2MDL(1)----轮询获取磁力计数据

e2studio开发磁力计LIS2MDL.1--轮询获取磁力计数据 概述视频教学样品申请源码下载速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()prin…

C语言菱形图案生成程序详细解析

1. 介绍 在这篇博客中&#xff0c;我们将详细解析一个用C语言编写的程序&#xff0c;该程序旨在生成具有对称美感的菱形图案。用户可以通过输入指定的长度&#xff0c;程序将输出相应大小的菱形。 2. 代码 注&#xff1a;代码中的注释已经非常详细&#xff0c;也有举例&#…

根据MySql的表名,自动生成实体类,模仿ORM框架

ORM框架可以根据数据库的表自动生成实体类&#xff0c;以及相应CRUD操作 本文是一个自动生成实体类的工具&#xff0c;用于生成Mysql表对应的实体类。 新建Winform窗体应用程序AutoGenerateForm&#xff0c;框架(.net framework 4.5)&#xff0c; 添加对System.Configuration的…

高效构建Java应用:Maven入门和进阶(三)

高效构建Java应用&#xff1a;Maven入门和进阶&#xff08;三&#xff09; 三. Maven的核心功能和构建管理3.1 依赖管理和配置3.2 依赖传递和冲突3.3 依赖导入失败场景和解决方案3.4 扩展构建管理和插件配置 三. Maven的核心功能和构建管理 3.1 依赖管理和配置 Maven 依赖管理…

7-Docker私有仓库registry搭建

1.Docker私有仓库registry搭建 1.下载registry镜像 命令: docker pull registry [root@centos79 ~]# docker search registry NAME DESCRIPTION STARS OFFICIAL AUTOMATED registry …

CentOS安装Docker(超详细)

CentOS安装Docker 1 知识小课堂2 CentOS安装Docker2.1 1.1.卸载&#xff08;可选&#xff09;1.2.安装docker1.3.启动docker1.4.配置镜像加速 3 CentOS安装DockerCompose3.1.下载3.2.修改文件权限3.3.Base自动补全命令&#xff1a; 4 Docker镜像仓库4.1.简化版镜像仓库4.2.带有…

数据分析求职-知识脑图

今天和大家聊聊数据分析求职常见面试题&#xff0c;这是这个系列的第一篇文章&#xff0c;但是我不想开始就直接罗列题目&#xff0c;因为这样的文章实在太多了&#xff0c;同学们的兴趣程度肯定一般。所以&#xff0c;我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…