Word Break - 将句子分成字典中的单词

时间:2014-07-19 16:33:27

标签: java

我正在尝试在leet代码中执行单词分解问题

https://oj.leetcode.com/problems/word-break-ii/

给定一个字符串s和一个单词字典dict,在s中添加空格以构造一个句子,其中每个单词都是一个有效的字典单词。 归还所有这些可能的句子 例如,给定

  

s =“catsanddog”,
  dict = [“cat”,“cats”,“and”,“sand”,“dog”]   解决方案是   [“猫与狗”,“猫沙狗”]。

public List<String> wordBreak(String s, Set<String>dict){

        if(dict.size()==0 || (s.length()==0) )
            return list;
        if(s.length()==1 && dict.contains(s)){
            list.add(s);
        }else{
                wordBreakHelper(s,dict);    
        }

        return list;
    }

    public String wordBreakHelper(String s, Set<String> dict) {

        if(dict.contains(s)){
            return s;
        }

        if(cache.containsKey(s))
            return cache.get(s);

        int N = s.length();

        for(int i=1;i<N;i++){

            String prefix = s.substring(0,i);

            if(dict.contains(prefix)){                    
                String suffix = s.substring(i,N);
                String segment = null;
                segment = wordBreakHelper(suffix,dict);
                if(segment!=null){
                    list.add(prefix+" "+segment);
                    return prefix+" "+segment;
                }
            }
        }
        cache.put(s,null);
        return null;

    }

输入

  

“abcd”,[“a”,“abc”,“b”,“cd”]

我的解决方案给出了

  

[“b cd”,“a b cd”]

但实际解决方案只是

  

“a b cd”。

为什么不应该

  

“b cd”

被视为有效的解决方案?你能帮我理解我的错误

0 个答案:

没有答案