139. Word Break

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".

 

public bool WordBreak(string s, ISet<string> wordDict) {
        if(s == null || s.Length == 0) return true;
        if(wordDict == null) return false;
        var newSet =new HashSet<string>();
        newSet.Add(s);
        while(newSet.Count()>0)
        {
            var temp =new HashSet<string>();
            foreach(string ss in newSet)
            {
                if(wordDict.Contains(ss)) return true;
                for(int i = 0;i<= ss.Length;i++)
                {
                    if(wordDict.Contains(ss.Substring(0,i)))
                    {
                        if(wordDict.Contains(ss.Substring(i))) return true;
                        temp.Add(ss.Substring(i));
                    }
                }
            }

            newSet = temp;
        }
        return false;
    }

 

posted @ 2016-09-15 04:26  咖啡中不塌缩的方糖  阅读(136)  评论(0编辑  收藏  举报