今日题目:
- 140. 单词拆分 II
- 139. 单词拆分
参考文章:- 回溯算法:单词拆分
今天主要做了两道单词拆分的问题,都是需要使用回溯算法来解决,第一个题目难度不大,第二个题目需要在“剪枝”上多做一些功夫,主要在这里学习一下在这个题目背景下如何利用备忘录避免重复解决子问题从而实现剪枝的。
本文主要参考 回溯算法:单词拆分 这篇文章,详细讲解可以移步到这里。
LC 140. 单词拆分 II 【easy】
140. 单词拆分 II
这个题目就是经典的使用回溯算法来解决的题目,难度不大。
LC 139. 单词拆分 【稍有难度】
139. 单词拆分
这个题目基本复用上面题目的代码思路就可以实现,但是会导致超时,所以这个题目的难点在于剪枝。
在这个题目中我们需要一个备忘录 memo
,memo[i]
表示子串 s[i: ]
是否可以被拆分成单词,这样可以避免重复求解,当子问题发现重复时,就可以立刻从备忘录返回答案。这一处的关键代码如下: