• 动态规划(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];
    }
    
  • 相关阅读:
    模拟黑客入侵,恶搞小伙伴的利器
    牛客网算法竞赛难题
    ybt ——1346【例4-7】亲戚
    FBI树
    noi2020第二题
    noi2020第一题
    Happiness
    YiJuWuLiaoDeHua
    挂掉了一个u盘
    NOIp2020
  • 原文地址:https://www.cnblogs.com/yjxyy/p/11121044.html
Copyright © 2020-2023  润新知