博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode python word-break-ii
阅读量:2428 次
发布时间:2019-05-10

本文共 1704 字,大约阅读时间需要 5 分钟。

端午假期已过,不要气馁

word-break-ii

Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.

Return all such possible sentences.
For example, given
s =‘catsanddog’,
dict =[‘cat’, ‘cats’, ‘and’, ‘sand’, ‘dog’].
A solution is[‘cats and dog’, ‘cat sand dog’].

题意

与word-break相比,这里需要列举具体的结果,而不是结果有多少种,或者要得出True or False 的结果,必用dfs.

思路

第一种思路是暴力dfs, 简单明了,一看就会;第一种结合了word-break的dp,就是在dfs前先检查s到底能不能分,比较精巧,大大节约了时间。

暴力dfs python实现

class Solution(object):    def __init__(self, wordDict):        self.res = []        self.wordDict = wordDict    def dfs(self, s, stringlist=''):        if not s:            self.res.append(stringlist[1:])        # for 循环确保取到s的最后一个        for i in range(1, len(s)+1):            if s[:i] in self.wordDict:                self.dfs(s[i:], stringlist+' '+s[:i])        return self.resif __name__ == '__main__':    s = 'catsanddog'    dict = ['cat', 'cats', 'and', 'sand', 'dog']    so = Solution(dict)    print(so.dfs(s))

dp+dfs python实现

class Solution(object):    def __init__(self, wordDict):        self.res = []        self.wordDict = wordDict    def dfs(self, s, stringlist=''):        if self.dp(s):            if not s:                self.res.append(stringlist[1:])            # for 循环确保取到s的最后一个            for i in range(1, len(s)+1):                if s[:i] in self.wordDict:                    self.dfs(s[i:], stringlist+' '+s[:i])            return self.res    def dp(self, s):        n = len(s)        dp = [False] * (n+1)        dp[0] = True        for i in range(n):            for j in range(i+1):                if dp[j] and s[j:i+1] in self.wordDict:                    dp[i+1] = True        return dp[n]

转载地址:http://aejmb.baihongyu.com/

你可能感兴趣的文章
Java程序员必看的 13 本 Java 书籍
查看>>
代码规范化必备书籍
查看>>
收集的描述软件质量的词语
查看>>
PostgreSQL - update语句怎么关联多个表
查看>>
IntelliJ IDEA 超实用使用技巧分享
查看>>
年过35岁的程序员爆料:大龄程序员们的花样出路
查看>>
一些好词好句
查看>>
用ArcMap为表增加一个新字段
查看>>
postgresql——条件判断函数
查看>>
IDEA 2018.2 升级到 IDEA 2019.2,中文字体渲染问题 中文显示异常
查看>>
PostgresSql 多表关联删除语句
查看>>
MySQL 千万 级数据量根据(索引)优化 查询 速度
查看>>
详解VSCode配置启动Vue项目
查看>>
沟通是人最基本的生存能力
查看>>
解决windows10中springboot的jar启动之后的假死状态
查看>>
linux下利用nohup后台运行jar文件包程序
查看>>
设计模式之策略模式
查看>>
Jdk9中新增的Stream方法
查看>>
jdk9 新特性 sjavac
查看>>
碎片化的时代,如何学习
查看>>