leetcode 139. 单词拆分

思路

  1. 定义一个bool类型的dp切片,dp[i]表示字符串s中前i个字符可以在wordDict中找到
  2. 初始化 dp[0] = true,空字符串可以被拆分。
  3. 遍历字符串 s 的每个位置 i,并在每个位置 j(0 <= j < i)检查子串 s[j:i] 是否在字典中,如果满足条件且 dp[j] = true,则更新 dp[i] = true。
  4. 最终返回 dp[len(s)] 表示整个字符串 s 能否被拆分。

代码

go 复制代码
func wordBreak(s string, wordDict []string) bool {
    n :=len(s)
    dp := make([]bool,n+1)
    dp[0]=true
    for i:=1;i<=n;i++{
        for j:=0;j<i;j++{
            if dp[j] && contains(wordDict,s[j:i]){
                dp[i]=true
                break
            }
        }
    }
    return dp[n]
}

func contains(wordDict []string, word string) bool {
	for _, w := range wordDict {
		if w == word {
			return true
		}
	}
	return false
}
相关推荐
Fly Wine5 小时前
Leetcode之有效字母异位词
算法·leetcode·职场和发展
程序员夏末6 小时前
【LeetCode | 第七篇】算法笔记
笔记·算法·leetcode
csdn_aspnet7 小时前
C/C++ 两个凸多边形之间的切线(Tangents between two Convex Polygons)
c语言·c++·算法
数据皮皮侠7 小时前
中国城市间地理距离矩阵(2024)
大数据·数据库·人工智能·算法·制造
3GPP仿真实验室7 小时前
深度解析基站接收机核心算法:从 MRC 到 IRC 的空间滤波演进
算法
Boop_wu7 小时前
[Java 算法] 动态规划(1)
算法·动态规划
WolfGang0073217 小时前
代码随想录算法训练营 Day18 | 二叉树 part08
算法
hanlin038 小时前
刷题笔记:力扣第43、67题(字符串计算)
笔记·算法·leetcode
yang_B6218 小时前
最小二乘法 拟合平面
算法·平面·最小二乘法
放下华子我只抽RuiKe59 小时前
深度学习全景指南:硬核实战版
人工智能·深度学习·神经网络·算法·机器学习·自然语言处理·数据挖掘