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

Leetcode 3291. Minimum Number of Valid Strings to Form Target I

  • Leetcode 3291. Minimum Number of Valid Strings to Form Target I
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3291. Minimum Number of Valid Strings to Form Target I

1. 解题思路

这一题第一反应就是用一个字典树+动态规划的方式,倒是也搞定了,不过对于下一题就搞不定了,感觉还是得进一步优化一下,不过对这道题倒是也算ok了。

2. 代码实现

给出python代码实现如下:

class Trie:
    def __init__(self):
        self.trie = {}
    
    def add_word(self, word):
        trie = self.trie
        for c in word:
            trie = trie.setdefault(c, {})
        trie["eos"] = ""

    def find(self, word):
        trie = self.trie
        for c in word:
            if c not in trie:
                return False
            trie = trie[c]
        return "eos" in trie

class Solution:
    def minValidStrings(self, words: List[str], target: str) -> int:
        trie = Trie()
        for w in words:
            trie.add_word(w)
            
        n = len(target)
        
        @lru_cache(None)
        def dp(idx):
            if idx >= n:
                return 0
            _trie = trie.trie
            ans = math.inf
            while idx < n and target[idx] in _trie:
                _trie = _trie[target[idx]]
                idx += 1
                ans = min(ans, 1+dp(idx))
            return ans
        
        ans = dp(0)
        return ans if ans != math.inf else -1

提交代码评测得到:耗时12771ms,占用内存41.8MB。


http://www.kler.cn/news/309596.html

相关文章:

  • 线性判别分析 (Linear Discriminant Analysis, LDA)
  • 【Unity学习心得】如何制作俯视角射击游戏
  • vue-router 在新的标签页打开链接/路由
  • 2024.9.11(k8s环境搭建)
  • 如何为 Java 应用程序创建安装程序
  • 《深度学习》【项目】 OpenCV 身份证号识别
  • PostgreSQL 的 logger 进程和 Oracle 的 diag 进程对比
  • SDKMAN!软件开发工具包管理器
  • 基于Spark框架实现XGBoost模型
  • ThinkPHP3改造自定义日志输出
  • setup函数子传父普通写法
  • 一般在写SQL时需要注意哪些问题,可以提高查询的效率?
  • adb install失败: INSTALL_PARSE_FAILED_NO_CERTIFICATES
  • JavaScript高级——闭包应用-自定义js模块
  • 『功能项目』窗口可拖拽脚本【59】
  • 设置spring boot禁止日志输出到控制台
  • c++中的二叉搜索树
  • 前端网络层性能优化
  • 【2024华为杯研究生数学建模竞赛】比赛思路、代码、论文更新中.....
  • 使用 Vue 3 和 TypeScript 实现带打字效果的仿 AI 分析展示组件
  • 【C/C++语言系列】指针数组、数组指针、函数声明和函数指针区别
  • Git 中的refs
  • Python异常处理:自定义异常②
  • 智慧体育场馆:科技引领未来运动体验
  • 【C语言进阶】动态内存与柔性数组:C语言开发者必须知道的陷阱与技巧
  • JAVA学习笔记01-变量的初始化
  • Medieval Fantasy Town Village Environment for RPG FPS 中世纪城镇环境
  • 时序数据库 TDengine 的入门体验和操作记录
  • 某oa命令执行漏洞挖掘思路
  • 网络安全。