Advertisement
sweet1cris

Untitled

Jan 9th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.13 KB | None | 0 0
  1.  
  2. public class Solution {
  3.     private int getMaxLength(Set<String> dict) {
  4.         int maxLength = 0;
  5.         for (String word : dict) {
  6.             maxLength = Math.max(maxLength, word.length());
  7.         }
  8.         return maxLength;
  9.     }
  10.  
  11.     public boolean wordBreak(String s, Set<String> dict) {
  12.         if (s == null || s.length() == 0) {
  13.             return true;
  14.         }
  15.  
  16.         int maxLength = getMaxLength(dict);
  17.         boolean[] canSegment = new boolean[s.length() + 1];
  18.  
  19.         canSegment[0] = true;
  20.         for (int i = 1; i <= s.length(); i++) {
  21.             canSegment[i] = false;
  22.             for (int lastWordLength = 1;
  23.                      lastWordLength <= maxLength && lastWordLength <= i;
  24.                      lastWordLength++) {
  25.                 if (!canSegment[i - lastWordLength]) {
  26.                     continue;
  27.                 }
  28.                 String word = s.substring(i - lastWordLength, i);
  29.                 if (dict.contains(word)) {
  30.                     canSegment[i] = true;
  31.                     break;
  32.                 }
  33.             }
  34.         }
  35.  
  36.         return canSegment[s.length()];
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement