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
}
相关推荐
黎阳之光几秒前
十五五智赋新程 黎阳之光以AI硬核技术筑造产业数智底座
大数据·人工智能·算法·安全·数字孪生
2401_891482172 分钟前
C++中的原型模式
开发语言·c++·算法
皙然2 分钟前
深度解析三色标记算法:JVM 并发 GC 的核心底层逻辑
java·jvm·算法
sali-tec4 分钟前
C# 基于OpenCv的视觉工作流-章40-特征找图
图像处理·人工智能·opencv·算法·计算机视觉
wearegogog1234 分钟前
毫米波MIMO系统仿真中混合预编码的交替最小化算法
算法·预编码算法
油泼辣子多加5 分钟前
【DL】Transformer算法应用
人工智能·深度学习·算法·机器学习·transformer
2301_795741795 分钟前
C++中的代理模式变体
开发语言·c++·算法
fof9206 分钟前
Base LLM | 从 NLP 到 LLM 的算法全栈教程 第二天
人工智能·算法·自然语言处理
2301_789015626 分钟前
封装RBTree(红黑树)实现myset和mymap
开发语言·数据结构·c++·算法·r-tree
大鹏说大话9 分钟前
后端开发指南:同步与异步接口的选型策略与实战场景
算法