Leetcode 140. 单词拆分 II
本文最后更新于303 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com

1.题目基本信息

1.1.题目描述

给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。

注意:词典中的同一个单词可能在分段中被重复使用多次。

1.2.题目地址

https://leetcode.cn/problems/word-break-ii

2.解题方法

2.1.解题思路

记忆化搜索

2.2.解题步骤

第一步,构建记忆化搜索函数。递归任务:在s[:index]在wordDict的情况下,返回s[index:n]部分能够构建的合法切分数组

  • 1.1.递归出口。s[n:n]为空字符,只有一种空组合

  • 1.2.递归主体。枚举下一个切分j+1的位置,并进行递归,并将递归结果组合成结果数组

第二步,调用递归函数,返回结果

3.解题代码

python代码

class Solution:
    def wordBreak(self, s: str, wordDict: List[str]) -> List[str]:
        # 思路:记忆化搜索
        n = len(s)
        wordDictSet = set(wordDict)
        # 第一步,构建记忆化搜索函数。递归任务:在s[:index]在wordDict的情况下,返回s[index:n]部分能够构建的合法切分数组
        @lru_cache
        def dfs(index):
            ans = []
            # 1.1.递归出口
            if index == n:
                return [[]]
            # 1.2.递归主体
            for j in range(index, n):
                word = s[index:j + 1]
                if word in wordDictSet:
                    ans1 = dfs(j + 1)
                    for a in ans1:
                        ans.append([word] + a)
            return ans
        ans = dfs(0)
        # print(ans)
        return [" ".join(arr) for arr in ans]

4.执行结果

觉得有帮助可以投喂下博主哦~感谢!

作者:geek007

转载请注明文章地址及作者哦~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇