[Leetcode] Word Break I
使用DFS遍历当然是可以的,尝试使用DP应该更加简洁,发现leetcode讨论确实是一个非常不错的资源。
下面是我的改进代码
1 public class Solution { 2 public boolean wordBreak(String s, Set<String> wordDict) { 3 if(s==null||s.length()==0) return false; 4 //flag[i] represents if s[0,...,i] can be formed by the wordDict 5 boolean [] flag = new boolean[s.length()]; 6 for(int i=0;i<s.length();i++){//i is the end index 7 for(int j=i;j>=0;j--){//我觉得从后往前更加合理,因为一般word不会太长吧,但是不知为什么,速度没有太高的提升 8 //for(int j=0;j<=i;j++){ 9 String subword = s.substring(j,i+1); 10 if(wordDict.contains(subword)&&(j==0||flag[j-1])) 11 { 12 flag[i]=true; 13 break;//如果找到了一种划分方式,就可以结束了 14 } 15 } 16 } 17 return flag[s.length()-1]; 18 } 19 }