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

 

 1 public class Solution {

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

 3         // Note: The Solution object is instantiated only once and is reused by each test case.

 4         if(s == null || s.length() == 0) return true;

 5         int len = s.length();

 6         boolean[] map = new boolean[len];

 7         for(int i = len - 1; i > -1; i --){

 8             for(int j = i + 1; j <= len; j ++){

 9                 String ss = s.substring(i,j);

10                 if(dict.contains(ss) && j == len){

11                     map[i] = true;

12                     break;

13                 }

14                 else if(dict.contains(ss) && j < len && map[j] == true){

15                     map[i] = true;

16                     break;

17                 }

18             }

19         }

20         return map[0];

21     }

22 }

 第二遍:

 1 public class Solution {

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

 3         // Note: The Solution object is instantiated only once and is reused by each test case.

 4         if(s == null || s.length() == 0) return true;

 5         int len = s.length();

 6         boolean[] map = new boolean[len];

 7         for(int i = len - 1; i > -1; i --)

 8             for(int j = i + 1; j <= len; j ++){

 9                     if(j < len && !map[j]) continue;

10                     else if(dict.contains(s.substring(i, j)) && (j == len || map[j])){

11                         map[i] = true;

12                         break;

13                     }

14         }

15         return map[0];

16     }

17 }

 

你可能感兴趣的:(break)