动态规划(0-1背包)---字符串按单词列表分割

Posted yjxyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划(0-1背包)---字符串按单词列表分割相关的知识,希望对你有一定的参考价值。

字符串按单词列表分割

139. Word Break (Medium)

s = "leetcode",
dict = ["leet", "code"].
Return true because "leetcode" can be segmented as "leet code".

题目描述:

??给定一个字符串和一个单词数组,判断字符串是否能被单词数组中的单词分割

思路分析:

??dict 中的单词没有使用次数的限制,因此这是一个完全背包问题。该问题涉及到字典中单词的使用顺序,因此可理解为涉及顺序的完全背包问题。求解顺序的完全背包问题时,对物品的迭代应该放在最里层。dp[i]表示字符串的前i个字符能否由单词列表分割。

代码:

public boolean wordBreak(String s,List<String>wordDict)
    int n=s.length();
    boolean []dp=new boolean[n+1];
    dp[0]=true;
    for(int i=1;i<=n;i++)
        for(String word:wordDict)
            int len=word.length();
            if(len<=i&&word.equals(s.substring(i-len,i)))
                dp[i]=dp[i]||dp[i-len];
            
        
    
    return dp[n];

以上是关于动态规划(0-1背包)---字符串按单词列表分割的主要内容,如果未能解决你的问题,请参考以下文章

动态规划(Dynamic Programming)

动态规划之——0-1背包问题

图解算法-怎么用动态规划解决0-1背包问题

数据结构--动态规划

算法---动态规划(背包问题分割回文串)

动态规划第六篇:01背包问题(分割等和子集 + 最后一块石头的重量 II)