首页 > 其他分享 >139. 单词拆分

139. 单词拆分

时间:2024-12-27 15:09:59浏览次数:4  
标签:index return str self 单词 拆分 wordDict 139 dp

  1. 题目链接

  2. 解题思路:暴力递归+缓存,也就是自顶向下的动态规划。process(s, index, wordDict)s[index..]后面的能被wordDict拼出来吗?使用一个for循环,尝试wordDict中的所有单词。然后加一个缓存表,就可以了

  3. 代码

    class Solution:
    
        # s2是s[i...]的一部分吗? 如果是,返回拼接到s的结束位置, 例如s[i, j]就是s2,则返回j + 1,否则返回-1
        def check(self, s: str, i: int, s2: str) -> int:
            if i + len(s2) > len(s):
                return -1
            for ch in s2:
                if ch != s[i]:
                    return -1
                i += 1
            return i
            
        # 现在在凑s[index...],能凑出来吗?
        def process(self, s: str, index: int, wordDict: List[str], dp: List[int]) -> bool:
            if index == len(s):
                return True
            if dp[index] != -1:
                return dp[index] == 1
            # 用哪个字符来凑?
            for str1 in wordDict:
                next_index = self.check(s, index, str1)
                if next_index != -1:
                    next = self.process(s, next_index, wordDict, dp)
                    if next:
                        dp[index] = True
                        return True
            dp[index] = False
            return False
    
        def wordBreak(self, s: str, wordDict: List[str]) -> bool:
            dp = [-1 for _ in range(len(s))]
            return self.process(s, 0, wordDict, dp)
    

标签:index,return,str,self,单词,拆分,wordDict,139,dp
From: https://www.cnblogs.com/ouyangxx/p/18635825

相关文章

  • python 打字小游戏(单词下落,打单词消除单词)
    下载库pipinstallpygame代码importpygameimportrandomimportsysimportctypesfromctypesimportwindll,byref,create_unicode_buffer,create_string_buffer#键盘布局相关的常量和函数classKeyboardLayout:def__init__(self):self.user32......
  • Java用本地字典数据库实现英语单词翻译
    Java用本地字典数据库实现英语单词翻译依赖的准备<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="h......
  • 攻克 LeetCode 186:反转字符串中的单词,你学会了吗?
    一、引言在编程的世界里,LeetCode无疑是一块检验实力的试金石。众多大厂面试中,LeetCode上的题目频繁出现,成为了程序员们迈向心仪岗位的必经之路。今天,我们就来深入剖析一道经典题目——LeetCode186.反转字符串中的单词。这道题看似简单,实则暗藏玄机,它不仅考察了对字符串操......
  • 大型项目在css开发过程中是通过什么策略拆分成多个模块的?
    在大型项目的CSS开发过程中,拆分成多个模块的策略主要包括以下几点:模块化设计:首先,根据业务逻辑和功能特点,将整个前端项目划分为若干个独立的模块。每个模块负责一个特定的功能或业务,具有清晰的边界,互不干扰。这种模块化设计有助于降低项目的复杂度,提高代码的可维护性和可复用性。......
  • 【openGauss】Java层传参到openGauss使用拼接字符串拆分为数组方案解决in中用foreach
    【openGauss】Java层传参到openGauss使用拼接字符串拆分为数组方案解决in中用foreach拼接的32767限制一、sql格式二、使用说明三、测试四、SQL解析五、其他说明一、sql格式比如delete:DELETEFROM表名WHERE主键ID字段=any(string_to_array(#{fieldList,jdb......
  • Solution - Luogu P11394 [JOI Open 2019] ウイルス実験
    首先可以根据字符串\(D\),\(\mathcal{O}(2^c|D|)\)(\(c\)为方向数\(4\))求出上下左右分别是否被感染时对应的最长连续段长度,用于后面的check。考虑到答案要求的最小值,于是可以考虑思考什么样的点不会作为最后的最小值的起始点。考虑到如果最先感染了点\(u\),且最终感染了点\(v......
  • 写一个方法将句子中颠倒单词
    在前端开发中,JavaScript是一种常用的编程语言。以下是一个使用JavaScript编写的函数,该函数可以将句子中的单词颠倒:functionreverseWordsInSentence(sentence){//将句子分割成单词数组constwords=sentence.split('');//颠倒单词数组的顺序con......
  • Linux 环境 c++ 实现单词数量统计
    g++的使用g++的安装升级#安装gccsudoapt-getinstallgcc#安装g++sudoapt-getinstallg++c++编译g++-o【生成目标文件名】【c++代码源文件】命令行传参使用命令行传参时使用此main函数argc表示传入参数个数argv用来访问参数,0为程序的名称,1到argc-1......
  • Solution - Luogu P11393 [JOI Open 2019] 送金
    下标默认是在\(\bmod\n\)意义下的。考虑到如果\(a_i>b_i\)那么不可能只操作\(a_{i-1}\)使得\(a_i\)合法,因为这只增不减。于是这说明当\(a_i>b_i\)时一定会操作\(a_i\)使得\(a_i\leb_i\)。但是同时如果\(b_i-a_i\)太大了,\(a_{i-1}\)就不一定能操作......
  • Java实现单词的翻译(详解爬虫操作)
    JAVA通过Crawler实现英语单词的翻译首先声明一点,这种方法仅限于低频次的交互来获取翻译信息,一旦一秒内大量的请求会被重定向,那就直接不能用了如果希望可以批量查询英语单词翻译,可以查看我的下一篇博客。接着我们上一讲Java如何用HaspMap统计次数并排序详解-ivanlee717-博......