码迷,mamicode.com
首页 > 其他好文 > 详细

139. Word Break

时间:2016-05-24 09:13:17      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:

    /*
     * 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

标签:

原文地址:http://www.cnblogs.com/zmyvszk/p/5522216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!