139. Word Break

Posted 我的名字叫周周

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了139. Word Break相关的知识,希望对你有一定的参考价值。

    /*
     * 139. Word Break
     * 12.31 by Mingyang
     * 首先我们要存储的历史信息dp[i]是表示到字符串s的第i个元素为止能不能用字典中的词来表示,
     * 我们需要一个长度为n的布尔数组来存储信息。然后假设我们现在拥有dp[0,...,i-1]的结果,
     * 我们来获得dp[i]的表达式。思路是对于每个以i为结尾的子串,看看他是不是在字典里面以及他之前的元素对应的dp[j]是不是true,如果都成立,那么dp[i]为true
     * 我觉得这里应该归在一个类里面,所有的位置i都有许多options,每一个options就是以i结尾的字符串,如果他们前面的dp也是true,他们也在dictionary里面,那么后面的也是true,逐渐递推
     */
     public boolean wordBreak(String s, Set<String> dict) {
            if(s==null || s.length()==0)
                return true;
            boolean[] dp = new boolean[s.length()+1];
            dp[0] = true;
            for(int i=0;i<s.length();i++)
            {//外层循环就是一个字符一个字符的遍历整个string
                StringBuilder str = new StringBuilder(s.substring(0,i+1));
                for(int j=0;j<=i;j++)
                {//里面的循环就是找到一种情况能够为true的情况就为true
                    if(dp[j] && dict.contains(str.toString()))
                    {
                        dp[i+1] = true;
                        break;
                    }
                    str.deleteCharAt(0);
                }
            }
            return dp[s.length()];
        }

 

以上是关于139. Word Break的主要内容,如果未能解决你的问题,请参考以下文章

139. Word Break

139. Word Break

139. Word Break

139. Word Break

LeetCode 139. Word Break

139. Word Break