Leetcode 139、单词拆分
思路:动态规划
- dp[i]表示以 i - 1 位置结尾的字符串是否可以由wordDict里面的字符串拼接得到
- 递推公式:dp[i]是否可以拼接得到,需要看 j - 1 ~ i - 1 部分的字符串是否在wordDict里面并且dp[j - 1]之前的字符串是否可以得到,并且这里可以用到 || 操作
- 初始化:dp数组长度为 len + 1, dp[0] = true, 表示空字符串可以得到
- 遍历顺序:从前向后遍历
时间复杂度:O(n * n)
- 字符串长度为n,一共有 O(n) 个状态需要计算,每次计算需要枚举 O(n) 个分割点,哈希表判断一个字符串是否出现在给定的字符串列表需要 O(1)
的时间,因此总时间复杂度为 O(n^2)。
空间复杂度:O(n)
- 使用dp数组维护中间结果
class Solution {
/*