Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.91 KB | None | 0 0
  1. /*
  2. Runtime: 1 ms, faster than 99.73% of Java online submissions for Word Break.
  3. Memory Usage: 34 MB, less than 100.00% of Java online submissions for Word Break.
  4. */
  5. class Solution {
  6.     public boolean wordBreak(String s, List<String> wordDict) {
  7.         boolean[] dp = new boolean[s.length()];
  8.         Arrays.fill(dp, true);
  9.         return wordBreakImpl(s, 0, dp, wordDict);
  10.     }
  11.    
  12.     public boolean wordBreakImpl(String s, int offset, boolean[] dp, List<String> wordDict) {
  13.         if (dp[offset]) {
  14.             for (String word : wordDict) {
  15.                 if (s.startsWith(word, offset)) {
  16.                     int next = offset + word.length();
  17.                     if (next == s.length() || wordBreakImpl(s, next, dp, wordDict)) {
  18.                         return true;
  19.                     }
  20.                 }
  21.             }
  22.             dp[offset] = false;
  23.         }
  24.         return false;
  25.     }
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement