首页 > 其他 > 详细

Word Break

时间:2015-03-22 12:18:18      阅读:213      评论:0      收藏:0      [点我收藏+]

Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.

For example, given
s = "leetcode",
dict = ["leet", "code"].

Return true because "leetcode" can be segmented as "leet code".

 

动态规划的思想,分别考虑n+1个划分点是否是breakable的,当前i位置是否可以breakable由breakable[j]和s.substring(j,i)是否存在于dict中决定,即breakable[i]=

breakable[j]&dict.contains(s.substring(j,i)) 其中j∈[0,i-1].

public class Solution {
    public boolean wordBreak(String s, Set<String> dict) {
        int size = s.length();
        boolean[] breakable = new boolean[size+1];
        breakable[0] = true;
        for(int i=1;i<=size;i++) {
            for(int j=0;j<i;j++) {
                if(breakable[j]&&dict.contains(s.substring(j,i))) {
                    breakable[i] = true;
                    break;
                }
            }
        }
        return breakable[size];
    }
}

 

Word Break

原文:http://www.cnblogs.com/mrpod2g/p/4356981.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!