单词拆分(一)
https://www.lintcode.com/problem/107/?utm_source=sc-libao-ql
描述
给定字符串 s 和单词字典 dict,判断是否可以利用字典 dict 中的出现的单词拼接出 s,其中字典 dict 中的单词可以重复使用。
因为我们已经使用了更强大的数据,所以普通的DFS方法无法解决此题。
样例
样例 1:
输入:
s = "lintcode"dict = ["lint", "code"]输出:
true解释:
lintcode可以分成lint和code。
样例 2: 输入:
s = "a"dict = ["a"]输出:
true解释:
a在dict中。
分析: 解题思路
解题思路:
该题目是一个典型的动态规划问题,旨在判断一个字符串 s 是否可以拆分成字典中的单词组合。通过设置一个 dp 数组,我们可以逐步判断每个子串是否能够在字典中找到。
初始化
dp数组,dp[i]表示字符串前i个字符能否被字典中的单词组合拆分。设置
dp[0]为True,表示空字符串可以被完全拆分。遍历字符串的每个字符,并检查从当前字符向前
max_len长度的字串是否在字典中。如果某个子串存在于字典中且之前的状态
dp[j]为True,则更新当前状态dp[i]为True。最终返回
dp[n],表示整个字符串是否可以被拆分成字典中的单词组合。
也可以用dfs+memo做.
Last updated
Was this helpful?