zoukankan      html  css  js  c++  java
  • LeetCode——139. 单词拆分

    先用set去重:

     public boolean wordBreak(String s, List<String> wordDict) {
            //dp
            int n = s.length();
            boolean[] dp = new boolean[n+1];
            dp[0] = true;
            Set<String> dict = new HashSet<>(wordDict);
            for(int i = 1; i <= n ; i++)
            {
               for(int j = 0; j < i ; j++)
               {
                   String str = s.substring(j,i);
                   if(dict.contains(str) && dp[j])
                   {
                       dp[i] = true;
                       break;
                   }
               }
            }
            return dp[n];
        }

    记忆法dp

    public boolean wordBreak(String s, List<String> wordDict) {
            //dp
            int n = s.length();
            boolean[] dp = new boolean[n+1];
            dp[0] = true;
           
            for(int i = 1; i <= n ; i++)
            {
               for(String word: wordDict)
               {
                   if(word.length() <= i)
                   {
                       if(dp[i - word.length()] && word.equals(s.substring(i-word.length(),i)))
                       {
                           dp[i] = true;
                           break;
                       }
                   }
               }
            }
            return dp[n];
        }
  • 相关阅读:
    1602液晶显示实验
    LNMP安装(二)
    LNMP安装(一)
    vim插件安装
    资料下载
    建表的sql
    time
    计算机里的加减乘除
    branch
    存储过程
  • 原文地址:https://www.cnblogs.com/swqblog/p/13271968.html
Copyright © 2011-2022 走看看