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
}
相关推荐
旖-旎8 分钟前
分治(快速选择算法)(3)
c++·算法·leetcode·排序算法·快速选择
_日拱一卒31 分钟前
LeetCode:合并区间
算法·leetcode·职场和发展
汀、人工智能43 分钟前
[特殊字符] 第3课:最长连续序列
数据结构·算法·数据库架构·图论·bfs·最长连续序列
少许极端1 小时前
算法奇妙屋(四十一)-贪心算法学习之路 8
学习·算法·贪心算法
Kethy__1 小时前
计算机中级-数据库系统工程师-数据结构-图
数据结构·算法·软考··数据库系统工程师·计算机中级
亿秒签到1 小时前
L2-007 家庭房产
数据结构·c++·算法
paeamecium2 小时前
【PAT甲级真题】- Longest Symmetric String (25)
数据结构·c++·算法·pat考试
汀、人工智能3 小时前
[特殊字符] 第6课:四数相加II
数据结构·算法·数据库架构·图论·bfs·四数相加ii
A.A呐3 小时前
【C++第二十二章】哈希与散列
c++·算法·哈希算法
汀、人工智能3 小时前
10 - 元组tuple:不可变序列
数据结构·算法·数据库架构·图论·不可变序列